Raspado de datos de trabajo de Indeed usando Python

En este artículo, veremos cómo raspar datos de trabajo de Indeed usando Python. Aquí usaremos Beautiful Soup y el módulo de solicitud para raspar los datos.

Módulo necesario

  • bs4 : Beautiful Soup (bs4) es una biblioteca de Python para extraer datos de archivos HTML y XML. Este módulo no viene integrado con Python. Para instalar este tipo, escriba el siguiente comando en la terminal.

pip instalar bs4

  • requests : Request le permite enviar requests HTTP/1.1 de manera extremadamente fácil. Este módulo tampoco viene integrado con Python. Para instalar este tipo, escriba el siguiente comando en la terminal.

requests de instalación de pip

Acercarse:

  • Importe todos los módulos necesarios.
  • Pase la URL en la función getdata() (función definida por el usuario) para que solicite una URL, devuelve una respuesta. Estamos usando el método get para recuperar información del servidor dado usando una URL dada.

Sintaxis: 

requests.get(url, argumentos)

  • Convierta esos datos en código HTML.

En la imagen dada, vemos el enlace, donde buscamos el trabajo y su ubicación, luego la URL se convierte en algo como esto https://in.indeed.com/jobs?q=”+job+”&l=”+Location, por lo tanto, formateará nuestra string en este formato.

  • Ahora analice el contenido HTML usando bs4.

Sintaxis: sopa = BeautifulSoup(r.content, ‘html5lib’)

Parámetros:

  • r.content : es el contenido HTML sin procesar.
  • html.parser  : especificando el analizador HTML que queremos usar.
  • Ahora filtre los datos requeridos usando la función de sopa.Find_all.
    • Ahora busque la lista con una etiqueta donde class_ = jobtitle turntileLink. Puede abrir la página web en el navegador e inspeccionar el elemento relevante haciendo clic con el botón derecho, como se muestra en la figura.

  • Encuentre el nombre y la dirección de la empresa con los mismos métodos que los anteriores.

Funciones utilizadas:

El código para esta implementación se divide en funciones definidas por el usuario para aumentar la legibilidad del código y agregar facilidad de uso.

  • geturl(): obtiene la URL de la que se van a extraer los datos
  • html_code(): obtiene el código HTML de la URL proporcionada
  • job_data(): filtra los datos del trabajo
  • Company_data(): filtrar los datos de la empresa

Programa:

Python3

# import module
import requests
from bs4 import BeautifulSoup
  
  
# user define function
# Scrape the data
# and get in string
def getdata(url):
    r = requests.get(url)
    return r.text
  
# Get Html code using parse
def html_code(url):
  
    # pass the url
    # into getdata function
    htmldata = getdata(url)
    soup = BeautifulSoup(htmldata, 'html.parser')
  
    # return html code
    return(soup)
  
# filter job data using
# find_all function
def job_data(soup):
    
    # find the Html tag
    # with find()
    # and convert into string
    data_str = ""
    for item in soup.find_all("a", class_="jobtitle turnstileLink"):
        data_str = data_str + item.get_text()
    result_1 = data_str.split("\n")
    return(result_1)
  
# filter company_data using
# find_all function
  
  
def company_data(soup):
  
    # find the Html tag
    # with find()
    # and convert into string
    data_str = ""
    result = ""
    for item in soup.find_all("div", class_="sjcl"):
        data_str = data_str + item.get_text()
    result_1 = data_str.split("\n")
  
    res = []
    for i in range(1, len(result_1)):
        if len(result_1[i]) > 1:
            res.append(result_1[i])
    return(res)
  
  
# driver nodes/main function
if __name__ == "__main__":
  
    # Data for URL
    job = "data+science+internship"
    Location = "Noida%2C+Uttar+Pradesh"
    url = "https://in.indeed.com/jobs?q="+job+"&l="+Location
  
    # Pass this URL into the soup
    # which will return
    # html string
    soup = html_code(url)
  
    # call job and company data
    # and store into it var
    job_res = job_data(soup)
    com_res = company_data(soup)
  
    # Traverse the both data
    temp = 0
    for i in range(1, len(job_res)):
        j = temp
        for j in range(temp, 2+temp):
            print("Company Name and Address : " + com_res[j])
  
        temp = j
        print("Job : " + job_res[i])
        print("-----------------------------")

Producción:

Publicación traducida automáticamente

Artículo escrito por kumar_satyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *