Categorías
Python

El uso de la cremallera de Python () Función para la iteración paralelo

 

Tabla de Contenidos

  • ¿Qué es Web raspado Por qué raspar la Web retos de la Web ScrapingAPIs:? Una alternativa a la Web raspado
  • Por qué Raspe la Web?
  • retos de la Web raspado
  • API: Una alternativa para Web raspado
  • Raspar el monstruo del sitio de trabajo
  • Parte 1: inspeccionar su SourceExplore datos del WebsiteDecipher la información en URLsInspect el sitio usando las herramientas de desarrollo
  • Explorar la Web
  • Decipher la información de direcciones URL
  • Inspeccionar el sitio usando las herramientas de desarrollo
  • Parte 2: Raspe HTML contenido de un PageStatic WebsitesHidden WebsitesDynamic Webs
  • estáticos sitios web
  • ocultos sitios web
  • dinámicos
  • Parte 3: analizan el código HTML con bellos elementos SoupFind por IDFind elementos de HTML Clase NameExtract de texto de HTML ElementsFind elementos por Nombre de clase y texto ContentExtract atributos de elementos HTML
  • Encuentre elementos por ID
  • Encontrar elementos por HTML Nombre de clase
  • extraer el texto de elementos HTML
  • Encontrar elementos por Nombre de clase y texto contenido
  • Extraer atributos de elementos HTML
  • Edificio del Trabajo Search Tool
  • adicional Práctica
  • Conclusión
  • Por qué raspar la web?
  • retos de la Web raspado
  • API: Una alternativa para Web raspado
  • Explorar la página Web
  • descifrar la información en las direcciones URL
  • Inspeccionar el sitio usando Herramientas de Desarrollo Webs
  • estáticos sitios web
  • ocultos
  • dinámico sitios web
  • encuentran elementos por ID
  • encuentran elementos de HTML Nombre de clase
  • extraer el texto de elementos HTML
  • Encuentre elementos por nombre de clase y el contenido del texto
  • Extracto de atributos de elementos HTML

La increíble cantidad de datos sobre Internet es un recurso rico para cualquier campo de la investigación o de interés personal. Para la cosecha de manera efectiva que los datos, que necesita para convertirse en experto en web raspado . Las bibliotecas de Python solicitudes y hermoso sopa son poderosas herramientas para el trabajo. Si desea aprender con ejemplos prácticos y usted tiene una comprensión básica de Python y HTML, entonces este tutorial es para ti.

En este tutorial, aprenderá a:

  • Use peticiones y hermoso sopa de raspado y análisis de datos de la Web
  • Caminar a través de una red de tuberías de raspado de principio a fin
  • Construir un script que recupera ofertas de trabajo a partir de la información web y muestra relevante en la consola

Este es un proyecto de gran alcance, ya que será capaz de aplicar el mismo proceso y las mismas herramientas a cualquier página web estática que hay en la World Wide web. Puede descargar el código fuente para el proyecto y todos los ejemplos en este tutorial haciendo clic en el siguiente enlace:

Obtener código de muestra: Haga clic aquí para obtener el código de ejemplo que va a utilizar para el proyecto y ejemplos en este tutorial. get de

Vamos a comenzar!

¿Qué es la Web raspado?

Web raspado es el proceso de recopilación de información a través de Internet. Incluso copiar y pegar la letra de su canción favorita es una forma de raspado web! Sin embargo, las palabras “raspado web” por lo general se refieren a un proceso que implica la automatización. Algunos sitios web no les gusta cuando rascadores automáticos recogen sus datos, mientras que otros no les importa.

Si está raspando una página respetuosa con fines educativos, entonces es poco probable que tenga algún problema. Aún así, es una buena idea hacer una investigación por su cuenta y asegúrese de que no está violando ningún Condiciones del servicio antes de iniciar un proyecto a gran escala. Para obtener más información sobre los aspectos jurídicos de raspado web, echa un vistazo a perspectivas legales sobre la raspa datos de la web moderna.

Por qué Raspe la Web?

decir que eres un surfista (tanto en línea como en la vida real) y que está buscando para el empleo. Sin embargo, usted no está buscando simplemente cualquier trabajo. Con la mentalidad de un surfista, que está esperando la oportunidad perfecta para rodar su camino!

Hay un sitio de trabajo que le gusta que ofrece exactamente los tipos de empleos que están buscando. Por desgracia, una nueva posición solamente aparece una vez en una luna azul. Usted piensa acerca de la comprobación para arriba en él todos los días, pero eso no suena como la más divertida y productiva de pasar el tiempo.

Afortunadamente, el mundo ofrece otras maneras de aplicar la mentalidad de que la persona que practica surf! En lugar de buscar en el sitio de trabajo todos los días, puede utilizar Python para ayudar a automatizar las partes repetitivas de su búsqueda de empleo. automático de bobina raspando puede ser una solución para acelerar el proceso de recolección de datos. Escribir el código una vez y se obtendrá la información que desea muchas veces y de muchas páginas.

el contrario, cuando se intenta obtener la información que desee de forma manual, puede pasar mucho tiempo haciendo clic, desplazamiento y búsqueda. Esto es especialmente cierto si se necesitan grandes cantidades de datos de sitios web que se actualizan periódicamente con nuevos contenidos. Manual de raspado web puede llevar mucho tiempo y la repetición.

Hay tanta información en la Web, y se añade constantemente nuevas informaciones. Algo entre todos que los datos probablemente de su interés, y gran parte de ella es sólo por ahí para tomar. Ya sea que esté realmente en la búsqueda de empleo, la recopilación de datos para apoyar a su organización de base, o está mirando para conseguir finalmente todas las letras de su artista favorito descargado en su ordenador, raspado web automatizado puede ayudarle a lograr sus objetivos.

retos de la Web raspado

la web ha crecido orgánicamente a partir de muchas fuentes. Combina una tonelada de diferentes tecnologías, estilos y personalidades, y que continúa creciendo hasta nuestros días. En otras palabras, la Web es una especie de lío caliente! Esto puede llevar a algunos de los retos que verá cuando intenta raspado web.

Uno de los retos es variedad . Cada sitio es diferente. Mientras te vas a encontrar estructuras generales que tienden a repetirse, cada sitio web es único y tendrá su propio tratamiento personal si desea extraer la información que es relevante para usted.

Otro reto es durabilidad . Sitios web cambian constantemente. Digamos que se ha construido un nuevo y brillante rascador web que automáticamente cereza-picks precisamente lo que quiere de su recurso de interés. La primera vez que se ejecuta la secuencia de comandos, funciona perfectamente. Sin embargo, cuando se ejecuta el mismo script sólo un poco más tarde, se encuentra con una pila desalentar y prolongado de los rastreos!

Este es un escenario realista, ya que muchos sitios web están en desarrollo activo. Una vez que la estructura del sitio ha cambiado, el rascador podría no ser capaz de navegar por el mapa del sitio correcta o encontrar la información relevante. La buena noticia es que muchos cambios en los sitios web son pequeñas e incrementales, así que probablemente será capaz de actualizar su rascador con sólo ajustes mínimos.

Sin embargo, tenga en cuenta que debido a que el Internet es dinámico, los raspadores usted construirá probablemente requieren un mantenimiento constante. Puede configurar la integración continua para ejecutar las pruebas de raspado periódicamente para asegurarse de que su script principal no se rompe sin su conocimiento.

API: Una alternativa para Web raspado

Algunos proveedores de sitios web ofrecen Aplicación interfaces de programación (API) que le permiten acceder a sus datos de una manera predefinida. Con las API, puede evitar análisis de HTML y en lugar de acceder a los datos directamente utilizando formatos como JSON y XML. HTML es sobre todo una manera de presentar visualmente el contenido a los usuarios.

Cuando se utiliza una API, el proceso es generalmente más estable que la recopilación de datos a través de raspado web. Esto se debe a las API están hechas para ser consumida por los programas, en lugar de por el ojo humano. Si el diseño de un sitio Web cambia, entonces no quiere decir que la estructura de la API ha cambiado.

Sin embargo, las API puede cambiar también. Tanto los retos de la variedad y la durabilidad se aplican a las API tal como lo hacen a los sitios web. Además, es mucho más difícil de inspeccionar la estructura de una API por sí mismo si la documentación que carece de calidad.

El enfoque y las herramientas necesarias para recopilar información utilizando las API están fuera del alcance de este tutorial. Para aprender más sobre él, echa un vistazo a la API de integración en Python.

Raspar el monstruo del sitio de trabajo

En este tutorial, se construirá un raspador web que va a buscar listados de Trabajo Programador desde el sitio agregador de empleo Monster. Su rascador web será analizar el código HTML para escoger los elementos pertinentes de información y el filtro que el contenido de palabras específicas.

Puede raspar cualquier sitio en Internet que se puede mirar, pero la dificultad de hacerlo depende del sitio. Este tutorial ofertas que una introducción a la Web raspado para ayudarle a entender el proceso en general. A continuación, se puede aplicar este mismo proceso para cada sitio web que usted quiere raspar.

Parte 1: Inspeccionar los datos de origen

El primer paso es dirigirse al sitio que desea raspar utilizando su navegador favorito. Tendrá que entender la estructura del sitio para extraer la información que le interesa.

Explorar la Web

Haga clic a través del sitio e interactuar con él al igual que cualquier usuario normal haría. Por ejemplo, se puede buscar el software empleos de en Australia utilizando la interfaz de búsqueda nativa del sitio:

Se puede ver que hay una lista de los trabajos devueltos en el lado izquierdo, y hay una descripción más detallada sobre el trabajo seleccionado en el lado correcto. Al hacer clic en cualquiera de los puestos de trabajo a la izquierda, el contenido de los cambios adecuados. También se puede ver que cuando interactúan con el sitio web, la URL en la barra de direcciones del navegador también cambia.

descifrar la información en las direcciones URL

Una gran cantidad de información puede ser codificada en una dirección URL. Tu web raspado viaje será mucho más fácil si primero se familiarice con la forma en direcciones URL de trabajo y lo que están hechos. Tratar de desmenuzar la URL del sitio que está actualmente en:

https://www.monster.com/jobs/search/?q=Software-Developer&where=Australia

Puede deconstruir lo anterior URL en dos partes principales:

Cualquier trabajo que va a buscar en este sitio web se utilizará la misma dirección URL base. Sin embargo, los parámetros de consulta cambiarán dependiendo de lo que estés buscando. Se puede pensar en ellos como cadenas de consulta que son enviadas a la base de datos para recuperar los registros específicos. parámetros

de consulta general, consisten en tres cosas:

Con esta información, se puede machacar a los parámetros de consulta de la URL en dos pares de valores clave:

tratar de cambiar los parámetros de búsqueda y observar cómo afecta a su dirección URL. Vaya por delante e introduzca nuevos valores en la barra de búsqueda encima de la tapa:

A continuación, tratar de cambiar los valores directamente en su URL. Vea lo que sucede cuando se pega la siguiente URL en la barra de direcciones de su navegador:

https://www.monster.com/jobs/search/?q=Programmer&where=New-York

Se dará cuenta de que los cambios en el cuadro de búsqueda del sitio se reflejan directamente en los parámetros de consulta de la URL y viceversa. Si cambia cualquiera de ellos, entonces usted verá resultados diferentes en el sitio web. Al explorar las direcciones URL, se puede obtener información sobre cómo recuperar los datos desde el servidor de la página web.

Inspeccionar el sitio usando las herramientas de desarrollo

A continuación, usted desea aprender más acerca de cómo los datos se estructura para su visualización. Tendrá que entender la estructura de la página para recoger lo que quiere de la respuesta HTML que usted recoger en uno de los próximos pasos. Herramientas para desarrolladores

pueden ayudar a entender la estructura de un sitio web. Todos los navegadores modernos vienen con herramientas de desarrollo instaladas. En este tutorial, verás cómo trabajar con las herramientas de desarrollo de Chrome. El proceso será muy similar al de otros navegadores modernos.

En Chrome, que puede abrir las herramientas de desarrollo a través del menú Ver → Herramientas → Desarrollador Desarrollador . También se puede acceder a ellos haciendo clic derecho en la página y seleccionando la opción la Inspeccionar, o mediante el uso de una combinación de teclas. Herramientas para desarrolladores

le permiten explorar de forma interactiva DOM del sitio para comprender mejor el origen que está trabajando. Para profundizar en su página de DOM, seleccione la pestaña Elementos en las herramientas de desarrollo. Usted verá una estructura con elementos HTML se puede hacer clic. Puede ampliar, colapso y editar elementos incluso a la derecha en su navegador:

se puede pensar en el texto que se muestra en el navegador como la estructura HTML de esa página. Si está interesado, entonces se puede leer más acerca de la diferencia entre el DOM y HTML en CSS-tricks.

Al hacer clic en elementos de la página, puede seleccionar Inspeccionar obtener un zoom a su ubicación en el DOM. También puede Pase el ratón sobre el texto HTML a la derecha y ver los elementos correspondientes se iluminan en la página.

Tarea: encontrar un solo puesto de trabajo. ¿Qué elemento HTML está envuelto en, y qué otros elementos HTML contiene?

jugar y explorar! Cuanto más se llega a conocer la página que está trabajando, más fácil será para raspar. Sin embargo, no se deje demasiado abrumado con todo lo que el texto HTML. Vamos a usar el poder de la programación a paso a través de este laberinto y cereza recoger sólo las partes interesantes con Hermosa sopa.

Parte 2: Raspe HTML contenido de una página

Ahora que tiene una idea de lo que está trabajando, es el momento para empezar a usar Python. En primer lugar, usted querrá obtener el código HTML del sitio en la secuencia de comandos de Python para que pueda interactuar con él. Para esta tarea, va a utilizar la biblioteca solicitudes de Python. Escriba lo siguiente en su terminal para instalarlo:

$ pip3 install requests

A continuación, abra un nuevo archivo en su editor de texto favorito. Todo lo que necesita para recuperar el código HTML son unas pocas líneas de código:

import requests

URL = 'https://www.monster.com/jobs/search/?q=Software-Developer&where=Australia'
page = requests.get(URL)

Este código realiza una solicitud HTTP a la URL dada. Recupera los datos HTML que el servidor envía y almacena los datos en un objeto de Python.

Si se echa un vistazo en el contenido descargado, entonces se dará cuenta de que se ve muy similar al HTML que inspeccionaban anterior con las herramientas de desarrollo. Para mejorar la estructura de cómo se visualiza el código HTML en su salida de la consola, puede imprimir atributo .Este contenido del objeto con pprint (). Sitios Web estáticas

El sitio web que está raspando en este tutorial sirve contenido HTML estático . En este escenario, el servidor que aloja el sitio envía documentos HTML espalda que ya contienen todos los datos que obtendrá para ver como usuario.

Cuando se inspeccionó la página con las herramientas de desarrollo anteriores, usted descubrió que una oferta de trabajo consiste en lo siguiente largo y desordenado de aspecto HTML:

Python Developer

LanceSoft Inc


Woodlands, WA

Puede ser difícil de envolver su cabeza en torno a un largo bloque de código HTML tal. Para que sea más fácil de leer, se puede utilizar un formateador HTML para limpiar automáticamente un poco más. Buena lectura le ayuda a comprender mejor la estructura de cualquier bloque de código. Mientras que puede o no puede ayudar a mejorar el formato del HTML, siempre vale la pena intentarlo.

Nota: Tenga en cuenta que cada sitio web tendrá un aspecto diferente. Es por eso que es necesario inspeccionar y comprender la estructura de la página que se está trabajando con antes de seguir adelante.

El HTML anterior sin duda tiene algunas partes confusas en ella. Por ejemplo, puede desplazarse a la derecha para ver la gran cantidad de atributos que tiene el elemento . Por suerte, los nombres de las clases sobre los elementos que usted está interesado en son relativamente sencillas:

  • class = «title»: el título de la oferta de trabajo de clase
  • = «empresa»: la empresa que ofrece la posición
  • class = «localización»: la ubicación en la que estaría trabajando caso

en alguna vez te pierdes en un gran montón de HTML, recuerde que siempre puede volver a sus herramientas del navegador y el uso de desarrolladores a seguir explorando el código HTML estructurar de forma interactiva.

Por ahora, usted ha aprovechado con éxito el diseño de la energía y de fácil uso de la biblioteca de solicitudes de Python. Con sólo unas pocas líneas de código, se las arregló para raspar el contenido HTML estático de la web y hacer que esté disponible para su posterior procesamiento.

Sin embargo, hay algunas situaciones más difíciles que pueden surgir cuando se está raspando sitios web. Antes de comenzar a utilizar sopa hermoso para recoger la información relevante del HTML que acaba de raspado, echar un vistazo rápido a las dos de estas situaciones. Sitios Web

ocultos

Algunas páginas contienen información que se esconde detrás de un inicio de sesión. Eso significa que usted necesita una cuenta para ser capaz de ver (y raspadura) nada de la página. El proceso para hacer una petición HTTP desde su script Python es diferente a cómo se accede a una página de su navegador. Eso significa que sólo porque se puede iniciar sesión en la página a través de su navegador, que no quiere decir que usted será capaz de raspar con la secuencia de comandos de Python.

Sin embargo, hay algunas técnicas avanzadas que se pueden utilizar con las solicitudes para acceder al contenido detrás de los inicios de sesión. Estas técnicas le permitirá iniciar sesión en sitios web a la vez que la solicitud HTTP desde dentro de la secuencia de comandos. Páginas

dinámicos sitios

estáticas son más fáciles de trabajar debido a que el servidor le envía una página HTML que ya contiene toda la información como respuesta. Se puede analizar una respuesta HTML con Hermosa sopa y comenzar a seleccionar los datos relevantes.

Por otro lado, con un sitio web dinámico el servidor podría no devolver cualquier HTML en absoluto. En su lugar, recibirá el código JavaScript como respuesta. Esto se verá completamente diferente de lo que viste cuando se inspeccionó la página con las herramientas de desarrollo de su navegador.

Nota: Para el trabajo de descarga desde el servidor de máquinas de los clientes, muchos sitios web modernos evitan trabajar con números en sus servidores siempre que sea posible. En lugar de ello, enviarán código JavaScript que su navegador se ejecutará localmente para producir el código HTML deseado.

Como se ha mencionado antes, lo que sucede en el navegador es no relacionado con lo que sucede en el script. El navegador diligencia ejecutar el código JavaScript que recibe de vuelta de un servidor y crear el DOM y HTML para usted a nivel local. Sin embargo, hacer una solicitud a un sitio web dinámico en el script Python no ofrecerle el contenido de la página HTML.

Cuando se utiliza peticiones, sólo recibirá lo que el servidor envía de vuelta. En el caso de un sitio web dinámico, que va a terminar con algo de código JavaScript, que usted no será capaz de analizar usando Hermosa sopa. La única manera de ir desde el código JavaScript para el contenido que interesa es ejecutar el código, al igual que su navegador hace. La biblioteca de solicitudes no se puede hacer eso por usted, pero hay otras soluciones que pueden.

Por ejemplo, las solicitudes-HTML es un proyecto creado por el autor de la biblioteca peticiones que le permite renderizar fácilmente JavaScript utilizando la sintaxis que es similar a la sintaxis de las peticiones. También incluye capacidades para el análisis de los datos mediante el uso de Beautiful Soup bajo el capó.

Nota: Otra opción popular para raspar el contenido dinámico es selenio . Se puede pensar en selenio como un navegador adelgazado hacia abajo que ejecuta el código JavaScript para que antes de la transmisión de la respuesta HTML representado a su script.

Usted no va a ir más profundo en el raspado de contenido generado dinámicamente en este tutorial. Por ahora, es suficiente para que usted recuerde que usted tiene que mirar en las opciones antes mencionadas si la página que está en el interés se genera en su navegador de forma dinámica.

Parte 3: Código HTML Analizar Con Hermosa sopa

Usted ha raspado con éxito algo de HTML a través de Internet, pero cuando se mira ahora, sólo parece que un gran lío. Hay un montón de elementos HTML aquí y allí, miles de atributos esparcidos alrededor, y no estaba allí mezclaron algunas JavaScript así? Es el tiempo para analizar esta larga respuesta de código con Hermosa sopa para que sea más accesible y seleccionar los datos que usted está interesado en.

Hermosa sopa es una biblioteca de Python para análisis sintáctico de datos estructurada . Se le permite interactuar con el HTML de una manera similar a como lo haría interactuar con una página web utilizando herramientas de desarrollo. Hermosa sopa expone un par de funciones intuitivas que puede utilizar para explorar el código HTML que ha recibido. Para empezar, utilice su terminal para instalar la biblioteca Hermosa sopa:

$ pip3 install beautifulsoup4

A continuación, importe la biblioteca y crear un objeto bello sopa:

import requests
from bs4 import BeautifulSoup

URL = 'https://www.monster.com/jobs/search/?q=Software-Developer&where=Australia'
page = requests.get(URL)

soup = BeautifulSoup(page.content, 'html.parser')

Cuando se agrega las dos líneas resaltadas de código, que está creando un objeto sopa Hermosa que toma el contenido HTML que raspado anterior como su entrada. Al crear una instancia del objeto, también instruir Hermosa sopa de utilizar el analizador apropiado.

Encuentra Elementos de Identificación

En una página web HTML, cada elemento puede tener asignado un atributo id. Como su nombre sugiere, que hace que el atributo id elemento único de identificación en la página. Usted puede comenzar a analizar su página seleccionando un elemento específico mediante su ID.

cambiar de nuevo a las herramientas de desarrollo e identificar el objeto HTML que contiene todas las ofertas de trabajo. Explora el cursor sobre partes de la página y el uso del botón derecho-a Inspeccionar .

Nota: Tenga en cuenta que es muy útil para cambiar periódicamente de nuevo a su navegador y de forma interactiva explorar la página utilizando las herramientas de desarrollo. Esto le ayuda a aprender cómo encontrar los elementos exactos que está buscando.

En el momento de escribir estas líneas, el elemento que estás buscando es un

con un atributo id que tiene el valor «ResultsContainer». Tiene un par de otros atributos, así, pero a continuación es la esencia de lo que está buscando:

Hermosa sopa permite encontrar ese elemento específico fácilmente por su ID:

results = soup.find(id='ResultsContainer')

Para facilitar la visualización, se puede. embellecer () cualquier objeto hermosa sopa cuando se imprima. Si se llama a este método en la variable de resultados que acaba de asignar más arriba, entonces usted debe ver todo el HTML contenida dentro de la

:

print(results.prettify())

Cuando se utiliza el ID del elemento, que es capaz de recoger un elemento de entre el resto del HTML. Esto le permite trabajar con sólo que esta parte específica del HTML de la página. Parece que la sopa está un poco más delgada! Sin embargo, todavía es bastante denso.

Encuentre elementos por HTML Nombre de clase

usted ha visto que cada puesto de trabajo se envuelve en un elemento

con la tarjeta-contenido de clase. Ahora puede trabajar con sus nuevos Hermosa sopa objeto llamado resultados y seleccionar sólo los anuncios de trabajo. Estos son, después de todo, las partes del HTML que le interesan! Usted puede hacer esto en una línea de código:

job_elems = results.find_all('section', class_='card-content')

Aquí, se llama a .find_all () en un objeto hermoso sopa, que devuelve un iterable que contiene todo el código HTML para todos los listados de trabajo aparece en esa página.

Tome un vistazo a todos ellos:

for job_elem in job_elems:
print(job_elem, end='\n'*2)

que ya está bastante limpio, pero todavía hay una gran cantidad de HTML! Usted ha visto anteriormente que su página tiene los nombres de clases en algunos elementos descriptivos. Vamos a escoger sólo aquellos:

for job_elem in job_elems:
# Each job_elem is a new BeautifulSoup object.
# You can use the same methods on it as you did before.
title_elem = job_elem.find('h2', class_='title')
company_elem = job_elem.find('div', class_='company')
location_elem = job_elem.find('div', class_='location')
print(title_elem)
print(company_elem)
print(location_elem)
print()

Gran! Te estás volviendo más y más a los datos que realmente está interesado en Sin embargo, hay mucho que hacer con todas esas etiquetas y atributos HTML flotando:.

Python Developer

LanceSoft Inc


Woodlands, WA

Usted verá cómo a reducir esta salida en la próxima sección.

extraer el texto de elementos HTML

Por ahora, sólo quiere ver el título, empresa, y la ubicación de cada puesto de trabajo. Y he aquí! Hermosa sopa tiene todo cubierto. Puede añadir .text a un objeto hermoso sopa para devolver sólo el contenido de texto de los elementos HTML que contiene el objeto:

for job_elem in job_elems:
title_elem = job_elem.find('h2', class_='title')
company_elem = job_elem.find('div', class_='company')
location_elem = job_elem.find('div', class_='location')
print(title_elem.text)
print(company_elem.text)
print(location_elem.text)
print()

Ejecutar el fragmento de código anterior y podrás ver el contenido de texto que se muestra. Sin embargo, también se obtendrá una gran cantidad de espacio en blanco. Puesto que usted está ahora trabajando con cadenas de Python, puede .strip () el espacio en blanco superfluos. También se pueden aplicar otros métodos conocidos cadena de Python a más limpia encima de su texto.

Nota: La web es desordenado y no se puede confiar en una estructura de la página para ser consistente a lo largo. Por lo tanto, tendrá más de las veces se producen errores al analizar HTML.

Cuando se ejecuta el código anterior, puede encontrarse con un AttributeError:

AttributeError: 'NoneType' object has no attribute 'text'

Si ese es el caso, entonces tomar un paso hacia atrás e inspeccionar a los resultados anteriores. ¿Había elementos con un valor de Ninguno? Usted puede haber notado que la estructura de la página no es completamente uniforme. Podría ser un anuncio en el que hay que muestra de una manera diferente a los anuncios de trabajo normales, lo que puede devolver resultados diferentes. Para este tutorial, puedes ignorar el elemento problemático y saltar sobre ella mientras se analizaba el código HTML:

for job_elem in job_elems:
title_elem = job_elem.find('h2', class_='title')
company_elem = job_elem.find('div', class_='company')
location_elem = job_elem.find('div', class_='location')
if None in (title_elem, company_elem, location_elem):
continue
print(title_elem.text.strip())
print(company_elem.text.strip())
print(location_elem.text.strip())
print()

Siéntase libre para explorar por qué uno de los elementos se devuelve como Ninguno. Puede utilizar la sentencia condicional que escribió anteriormente para imprimir () a inspeccionar el elemento relevante en más detalle. ¿Qué opinas está pasando allí?

Después de completar los pasos anteriores tratan de ejecutar el script de nuevo. Los resultados finalmente se ven mucho mejor:

Python Developer
LanceSoft Inc
Woodlands, WA

Senior Engagement Manager
Zuora
Sydney, NSW

Encuentre elementos por nombre de clase y el contenido del texto

Por ahora, usted ha limpiado la lista de trabajos que has visto en el sitio web. Mientras que eso es bastante limpio ya, usted puede hacer su escritura más útil. Sin embargo, no todos los listados de trabajo parecen ser los trabajos de desarrollador que estaría interesado en como desarrollador de Python. Así que en lugar de la impresión de todos los puestos de trabajo en la página, primero filtrarlas para algunas palabras clave.

Usted sabe que los títulos de trabajo en la página se mantienen dentro de los elementos

. Para filtrar los únicos forspecific, se puede utilizar el argumento de cadena:

python_jobs = results.find_all('h2', string='Python Developer')

Este código busca todos los elementos

donde la cadena coincide con contenidos ‘Python desarrollador’ exactamente. Tenga en cuenta que usted está llamando directamente el método en su primera resultados variables. Si sigue adelante e imprimir () la salida del código anterior fragmento a la consola, a continuación, puede ser decepcionado ya que probablemente estará vacía:

[]

Definitivamente había un trabajo con ese título en los resultados de búsqueda, así que por qué es que no aparecen? Cuando se utiliza String = igual que lo hizo anteriormente, su apariencia de programa para exactamente esa cadena. Cualquier diferencia en mayúsculas o espacios en blanco se evitar que el elemento de juego. En la siguiente sección, encontrará una manera de hacer la cadena más general.

pasar una función a un hermoso Método sopa

Además de las cadenas, que a menudo puede pasar funciones como argumentos a los métodos hermosas sopa. Puede cambiar la línea de código anterior para utilizar una función en su lugar:

python_jobs = results.find_all('h2',
string=lambda text: 'python' in text.lower())

Ahora estás pasando una función anónima a la cadena = argumento. Las miradas de función lambda en el texto de cada elemento

, convertidos a minúsculas, y comprueba si la subcadena ‘Python’ se encuentra en cualquier lugar allí. Ahora usted tiene un partido:

>>> print(len(python_jobs))
1

Su programa ha encontrado una coincidencia!

Nota: En caso que todavía no consigue un partido, intente adaptar la cadena de búsqueda. Las ofertas de trabajo en esta página están cambiando constantemente y puede que no haya un trabajo histórico, que incluye la subcadena ‘python’ en su título en el momento en que se está trabajando a través de este tutorial.

El proceso de búsqueda de elementos específicos en función de su contenido de texto es una poderosa manera de filtrar la respuesta HTML para la información que está buscando. Hermosa sopa le permite utilizar cualquiera de las cadenas exactas o funciones como argumentos para el filtrado de texto en objetos bellos sopa.

Extraer atributos de elementos HTML

En este punto, la secuencia de comandos de Python ya se raspa el sitio y filtra su HTML para ofertas de trabajo pertinentes. ¡Bien hecho! Sin embargo, una cosa que aún falta es el enlace para buscar trabajo.

Mientras inspeccionaban la página, se encontró que el enlace es parte del elemento que tiene la clase de título HTML. El código actual despoja de todo el enlace al acceder al atributo .text de su elemento padre. Como hemos visto antes, .text sólo contiene el contenido del texto visible de un elemento HTML. Las etiquetas y atributos no son parte de eso. Para obtener la URL real, desea extracto de uno de esos atributos en lugar de descartarlo.

Mira la lista de resultados filtrados python_jobs que creó anteriormente. El URL está contenida en el atributo href de la etiqueta anidada. Empezar por ir a buscar el elemento . A continuación, extraer el valor de su atributo href usando la notación de corchetes:

python_jobs = results.find_all('h2',
string=lambda text: "python" in text.lower())

for p_job in python_jobs:
link = p_job.find('a')['href']
print(p_job.text.strip())
print(f"Apply here: {link}\n")

El filtra resultados sólo mostrarán enlaces a las oportunidades de trabajo que incluyen pitón en su título. Puede utilizar la misma notación de corchetes para extraer otros atributos HTML también. Un caso de uso común es buscar la URL de un vínculo, como lo hizo anteriormente.

Edificio del Trabajo Search Tool

Si has escrito el código junto con este tutorial, entonces usted puede ya ejecutar el script tal cual. Para terminar su viaje en raspado web, usted podría dar un cambio de imagen del código final y crear una aplicación de interfaz de línea de comandos que busca ofertas de trabajo para desarrolladores en cualquier ubicación que definen.

Se puede extraer de una versión de la aplicación de línea de comandos del código que construyó en este tutorial en el siguiente enlace:

Obtener código de muestra: Haga clic aquí para obtener el código de ejemplo que va a utilizar para el proyecto y ejemplos en este tutorial.

Si usted está interesado en aprender cómo adaptar su guión como una interfaz de línea de comandos, a continuación, echa un vistazo a cómo construir interfaces de línea de comandos en Python Con argparse.

práctica adicional

A continuación se muestra una lista de otras bolsas de trabajo. Estas páginas enlazadas también vuelven a sus resultados de búsqueda como respuesta HTML estáticas. Para seguir practicando sus nuevas habilidades, se puede revisar el proceso de raspado web utilizando cualquiera o todos de los siguientes sitios:

  • PythonJobs
  • remoto (punto) co
  • De hecho

Ir a través de este tutorial de nuevo desde la parte superior utilizando una of these other sites. You’ll see that the structure of each website is different and that you’ll need to re-build the code in a slightly different way to fetch the data you want. This is a great way to practice the concepts that you just learned. While it might make you sweat every so often, your coding skills will be stronger for it!

During your second attempt, you can also explore additional features of Beautiful Soup. Use the documentation as your guidebook and inspiration. Additional practice will help you become more proficient at web scraping using Python, requests, and Beautiful Soup.

Conclusion

Beautiful Soup is packed with useful functionality to parse HTML data. It’s a trusted and helpful companion for your web scraping adventures. Its documentation is comprehensive and relatively user-friendly to get started with. You’ll find that Beautiful Soup will cater to most of your parsing needs, from navigating to advanced searching through the results.

In this tutorial, you’ve learned how to scrape data from the Web using Python, requests, and Beautiful Soup. You built a script that fetches job postings from the Internet and went through the full web scraping process from start to finish.

You learned how to:

  • Inspect the HTML structure of your target site with your browser’s developer tools
  • Gain insight into how to decipher the data encoded in URLs
  • Download the page’s HTML content using Python’s requests library
  • Parse the downloaded HTML with Beautiful Soup to extract relevant information

With this general pipeline in mind and powerful libraries in your toolkit, you can go out and see what other websites you can scrape! Have fun, and remember to always be respectful and use your programming skills responsibly.

You can download the source code for the sample script that you built in this tutorial by clicking on the link below:

Get Sample Code: Click here to get the sample code you’ll use for the project and examples in this tutorial.

Deja un comentario

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