es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

De hecho, enlaces de empleo individual.

Lo siento si esto ya se ha preguntado antes, pero estoy tratando de extraer algunos trabajos de Indeed, y obtener la URL de la página a partir del título, solo para poder obtener también la descripción de la nueva página.
Solía funcionar bien, pero recientemente estoy obteniendo el siguiente código de error:

link = jobs.find(“a”, class_=”jobtitle”)[“href”]
TypeError: el objeto ‘NoneType’ no es subscriptable

De todas formas, aquí está el código.

resultados = soup.findAll("div", {"class": "result"})

for jobs in soup.find_all(class_="result"):

    **link = jobs.find("a", class_="jobtitle")["href"]
    if "http" not in link:
        link = "http://uk.indeed.com" + link
    print("Link:", link)**

    page = requests.get(link)
    soup = BeautifulSoup(page.content, "html.parser")
    try:
        job_description = soup.find(
            "div", id="jobDescriptionText"
        ).decode_contents(formatter="html")
    except Exception as e:
        job_description = None
    print("job_description:", job_description)

Por favor ayuda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el error está ocurriendo cuando se intenta encontrar la etiqueta “a” con la clase “jobtitle” dentro de la variable “jobs”. El error está diciendo que la línea “jobs.find(“a”, class_=”jobtitle”)” está devolviendo un objeto de tipo NoneType, lo que significa que no encontró la etiqueta “a” con la clase especificada.

    Para solucionar este error, puedes agregar una comprobación para asegurarte de que la línea “jobs.find(“a”, class_=”jobtitle”)” devuelva un objeto válido antes de intentar acceder a su atributo “href”. Una forma de hacer esto es utilizar una declaración if para verificar si el resultado de la operación de búsqueda no es None:

        for jobs in soup.find_all(class_="result"):
            link_element = jobs.find('a', class_='jobtitle')
            if link_element is not None:
                link = link_element['href']
                if 'http' not in link:
                    link = "http://uk.indeed.com" + link
                print("Link:", link)
    
                page = requests.get(link)
                soup = BeautifulSoup(page.content, "html.parser")
                try:
                    job_description = soup.find("div", id="jobDescriptionText").decode_contents(formatter="html")
                except Exception as e:
                    job_description = None
                print("job_description:", job_description)
    

    Este código actualizado almacena el resultado de la operación de búsqueda en una variable llamada “link_element” y luego verifica si esa variable no es None antes de intentar acceder a su atributo “href”. Esto debería evitar que ocurra el error de “NoneType”.

Comments are closed.