? Estas son sus opciones:","Crunchbase","Quiénes somos","Gracias a todos por el increíble apoyo.","Enlaces rápidos","Programa de afiliados","Premium","ProxyScrape prueba premium","Tipos de proxy","Países sustitutos","Casos de uso de proxy","Importante","Política de cookies","Descargo de responsabilidad","Política de privacidad","Condiciones generales","Redes sociales","Facebook","LinkedIn","Twitter","Quora","Telegrama","Discordia","\n © Copyright 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Bélgica | IVA BE 0749 716 760\n","Web Scraping For Job Postings - An Ultimate %year% Guide","Hay suficientes portales de empleo que pueden notificarte las ofertas que se ajustan a tu perfil. Sin embargo, con una solución de job scraping obtendrás una lista completa de empleos y su descripción en una práctica base de datos. Esto le permitirá tener una mejor visión de todas las oportunidades de trabajo en un solo lugar.","El raspado de páginas web suele plantear ciertos problemas, como bloqueos de IP, geobloqueos y velocidad limitada. El raspado de trabajos de portales de empleo también presenta estos problemas. Para evitar todos estos problemas, las direcciones proxy pueden ayudarle con las direcciones IP de la ubicación requerida y garantizar el anonimato.","Requests, BeautifulSoup, y Pandas son librerías python bastante comunes para scrapear datos relacionados con el trabajo desde sitios web. Request es la librería python más utilizada para enviar peticiones web, mientras que BeautifulSoup se encarga de analizar los datos y Pandas ayuda con las operaciones de estructura de datos."]}
El Web Scraping para ofertas de empleo es un atajo alternativo para que los demandantes de empleo creen una base de datos de ofertas actuales. Randstad afirma que la búsqueda media de empleo puede durar entre cinco y seis meses, desde que se presenta una candidatura hasta que se cubre un puesto. ¿Y si existiera una solución que redujera la carga
El Web Scraping para ofertas de empleo es un atajo alternativo para que los demandantes de empleo creen una base de datos de ofertas actuales. Randstad afirma que la búsqueda media de empleo puede durar entre cinco y seis meses, desde que se presenta una solicitud hasta que se cubre un puesto. ¿Y si existiera una solución que redujera la carga de navegar por todos los portales de empleo y elegir el que más le convenga?
Este artículo te llevará de viaje explicándote cómo hacer web scraping para ofertas de empleo. Por lo tanto, usted está en el mercado de trabajo y tratando de encontrar el mejor trabajo. Pero usted quiere jugar más inteligente y no más difícil. ¿Por qué no construir un raspador web para recoger y analizar los anuncios de trabajo para usted. Una vez que lo configures, te proporcionará una gran cantidad de datos en un formato ordenado, para que no tengas que comprobarlo manualmente una y otra vez. Empecemos.
El raspado web para ofertas de empleo es la solución que recopila automáticamente datos de múltiples portales de empleo y reduce el tiempo necesario para obtener datos de cada sitio web. Disponer de una herramienta de este tipo, que puede proporcionarle una base de datos completa de ofertas de empleo, simplificará su tarea en gran medida. Todo lo que tienes que hacer es filtrar las que te convengan y proceder con el proceso de solicitud.
Así que estás en el mercado laboral e intentas encontrar el mejor trabajo. Pero usted quiere jugar más inteligente y no más difícil. ¿Por qué no crear un raspador web que recopile y analice las ofertas de empleo? Una vez que lo configures, te proporcionará una gran cantidad de datos en un formato ordenado, para que no tengas que comprobarlos manualmente una y otra vez. Empecemos.
[Descargo de responsabilidad Muchos sitios web pueden restringir la extracción de datos de sus páginas. Los usuarios pueden estar sujetos a problemas legales dependiendo de dónde y cómo intenten extraer la información. Así que hay que ser extremadamente cuidadoso si se buscan sitios que alberguen sus datos. Por ejemplo, Facebook, Linked In y Craiglist a veces se preocupan si se extraen datos de sus páginas. Así que si quieres hacer scraping, hazlo por tu cuenta y riesgo].
Este será un artículo muy básico en el que veremos los fundamentos del web scraping extrayendo alguna información útil respecto a empleos relacionados con "Data Science" de indeed.com. Escribiremos un programa sorprendente que actualiza los puestos de trabajo varias veces de forma manual. Algunas librerías útiles que serán muy prácticas mientras construimos este scraper son "requests" y "BeautifulSoup".
En primer lugar, echemos un vistazo a la página de ejemplo que vamos a extraer de hecho.
La estructura de la URL es importante:
Esta estructura de URL sería de gran ayuda a medida que continuamos construyendo el scraper y recopilando datos de múltiples páginas.
Chrome puede examinar la estructura HTML de la página haciendo clic con el botón derecho del ratón y utilizando la opción inspeccionar elemento. Aparecerá un menú a la derecha, que también mostrará las etiquetas de los elementos anidados y, al situar el cursor sobre esos elementos, resaltará esa parte de la pantalla.
Para este artículo, supongo que sabes lo básico sobre HTML como etiquetas, divs, etc., pero por suerte no necesitas saberlo todo. Sólo necesitas entender la estructura de la página y la jerarquía de los diferentes componentes.
Ahora hemos analizado la estructura de la página. Esto nos ayudará a construir código de acuerdo a esa información para extraer los datos de nuestra elección. Empecemos primero importando nuestras librerías. Nótese que aquí también estamos importando "time", lo que será útil para no saturar el servidor del sitio al raspar la información.
importar solicitudes
importar bs4
from bs4 import BeautifulSoup
import pandas as pd
import tiempo
Primero nos centraremos en la página única para retirar cada dato que queramos,
URL = "https://www.indeed.com/jobs?q=data+scientist+%2420%2C000&l=New+York&start=10"
#realizar una petición de la URL indicada anteriormente:
page = requests.get(URL)
#especificando el formato deseado de "page" usando el parser html - esto permite a python leer los distintos componentes de la página, en lugar de tratarla como una cadena larga.
soup = BeautifulSoup(page.text, "html.parser")
#impresión de la sopa en un formato de árbol más estructurado que facilita la lectura
print(soup.prettify())
El uso de prettify facilita tener una visión general de la codificación HTML de la página y proporciona una salida como esta,
Ahora toda la información de nuestra página de interés está en nuestra variable "sopa". Tenemos que escarbar más en el código para iterar a través de varias etiquetas y sub-etiquetas para capturar la información requerida.
Los cinco puntos clave de toda oferta de empleo son,
Título del puesto.Nombre de la empresa.Ubicación.Salario.Resumen del puesto.
Si echamos un vistazo a la página, hay 15 ofertas de empleo. Por lo tanto, nuestro código también debería generar 15 elementos diferentes. Sin embargo, si el código proporciona menos que esto, podemos volver a la página y ver lo que no se está capturando.
As can be seen, the entirety of each job posting is under <div> tags, with an attribute “class” = “row result.”
Further, we could also see that job titles are under <a> tags, with the attribute “title = (title)”. One can see the value of the tag’s attribute with tag[“attribute”], so I can use it to find each posting’s job title.
Si resumimos, la función que vamos a ver implica los tres pasos siguientes,
Pulling out all the <div> tags with class including “row”.Identifying <a> tags with attribute “data-tn-element”:”jobTitle”For each of these <a> tags, find attribute values “title”
def extract_job_title_from_result(soup):
jobs = []
for div in soup.find_all(name="div", attrs={"class":"row"}):
for a in div.find_all(name="a", attrs={"data-tn-element":"jobTitle"}):
jobs.append(a["title"])
return(jobs)
extract_job_title_from_result(soup)
Este código producirá un resultado como el siguiente,
Getting company names can be a bit tricky because most of them are appearing in <span> tags, with “class”:” company”. They are also housed in <span> tags with “class”:” result-link-source”.
Utilizaremos sentencias if/else para extraer la información de la empresa de cada uno de estos lugares. Con el fin de eliminar los espacios en blanco alrededor de los nombres de las empresas cuando se emiten, vamos a utilizar inputting.strip() al final.
def extract_company_from_result(soup):
companies = []
for div in soup.find_all(name="div", attrs={"class":"row"}):
company = div.find_all(name="span", attrs={"class":"company"})
if len(company) > 0:
for b in company:
companies.append(b.text.strip())
else:
sec_try = div.find_all(name="span", attrs={"class":"result-link-source"})
for span in sec_try:
companies.append(span.text.strip())
return(companies)
extract_company_from_result(soup)
Locations are located under the <span> tags. Span tags are sometimes nested within each other, such that the location text may sometimes be within “class”:”location” attributes, or nested in “itemprop”:”addressLocality”. However a simple for loop can examine all span tags for text and retrieve the necessary information.
def extract_location_from_result(soup):
locations = []
spans = soup.findAll('span', attrs={'class': 'location'})
for span in spans:
locations.append(span.text)
return(locations)
extract_location_from_result(soup)
El salario es la parte más difícil de extraer de los anuncios de empleo. La mayoría de los anuncios no publican información sobre el salario, mientras que en otros que sí lo hacen, puede haber varios lugares para recogerlo. Así que tenemos que escribir un código que puede recoger varios salarios de varios lugares, y si no se encuentra el salario, tenemos que crear un marcador de posición "No se encontró nada" valor para los puestos de trabajo que no contienen salario.
Some salaries are under <nobr> tags, while others are under <div> tags, “class”:”sjcl” and are under separate div tags with no attributes. Try/except statement can be helpful while extracting this information.
def extract_salary_from_result(soup):
salaries = []
for div in soup.find_all(name="div", attrs={"class":"row"}):
try:
salaries.append(div.find('nobr').text)
except:
try:
div_two = div.find(name="div", attrs={"class":"sjcl"})
div_three = div_two.find("div")
salaries.append(div_three.text.strip())
except:
salaries.append("Nothing_found")
return(salaries)
extract_salary_from_result(soup)
La última tarea es obtener el resumen del puesto. Sin embargo, no es posible obtener los resúmenes de cada puesto en particular porque no están incluidos en el HTML de una determinada página de Indeed. Podemos obtener alguna información sobre cada puesto a partir de lo que se proporciona. Para ello podemos utilizar Selenium.
But let’s first try this using python. Summaries are located under <span> tags. Span tags are nested within each other such that the location text is within “class”:” location” tags or nested in “itemprop”:” adressLocality”. However, using a simple for loop can examine all span tags for text to retrieve the necessary information.
Artículos relacionados
Cómo scrapear Twitter con Python
Cómo scrapear Instagram con Python
Cómo scrapear Reddit con Python
En este artículo, hemos visto qué es el web scraping y cómo puede ser útil en nuestra vida diaria mediante un ejemplo práctico de scraping de datos de empleo de las páginas web de Indeed. Ten en cuenta que los resultados que obtengas pueden ser diferentes a estos ya que las páginas son dinámicas, por lo que la información va cambiando con el tiempo.
El Web Scraping es una técnica increíble si se hace correctamente y de acuerdo con sus necesidades. Hemos visto además los cinco aspectos importantes de cada anuncio de empleo y cómo extraerlos. Cuando pruebes este código por tu cuenta, habrás raspado los datos de las ofertas de empleo y no tendrás que buscarlas manualmente, lo cual es increíble. La misma técnica puede aplicarse a otras páginas web, pero su estructura puede ser diferente. Por lo tanto, hay que optimizar el código en función de ello. Pero todos los fundamentos están cubiertos en este artículo, por lo que no habría ninguna dificultad en el raspado de otras páginas también.
Si busca servicios de proxy, no olvide echar un vistazo a ProxyScrapeproxies residenciales y premium.