Red de conocimiento informático - Material del sitio web - Cómo implementar web scraping con Python

Cómo implementar web scraping con Python

Definición de Web scraping

Web scraping es el proceso de extracción de datos de la web. Con las herramientas adecuadas, se puede extraer cualquier dato que pueda ver. En este artículo, nos centraremos en programas que automatizan el proceso de extracción, ayudándole a recopilar grandes cantidades de datos en un período de tiempo más corto. Además de los casos de uso que mencioné anteriormente, los usos de la tecnología de scraping incluyen: seguimiento de SEO, seguimiento de trabajos, análisis de noticias y mi favorito: ¡análisis de sentimiento en las redes sociales!

Una advertencia

Antes de embarcarse en su aventura de web scraping, asegúrese de comprender las cuestiones legales involucradas. Muchos sitios web prohíben explícitamente el rastreo de su contenido en sus términos de servicio. Por ejemplo, el sitio web de Medium escribe: "Es aceptable rastrear de acuerdo con las regulaciones en el archivo robots.txt del sitio web, pero prohibimos el raspado". Para los sitios web que no permiten el rastreo, el raspado puede incluirlo en su lista negra. Como cualquier herramienta, el web scraping se puede utilizar con fines nefastos, como copiar el contenido de un sitio web. Además, existen numerosas acciones legales resultantes del web scraping.

Configuración del código

Ahora que entendemos completamente la necesidad de proceder con precaución, comencemos a aprender sobre el web scraping. De hecho, el web scraping se puede implementar a través de cualquier lenguaje de programación. No hace mucho, lo implementamos usando Node. En este artículo, usaremos Python para implementar el rastreador debido a su simplicidad y amplia compatibilidad con paquetes.

El proceso básico de rastreo web

Cuando abres un sitio en la red, se descargará su código HTML y tu navegador web lo analizará y mostrará. Este código HTML contiene toda la información que ve. Por lo tanto, la información requerida (como el precio) se puede obtener analizando el código HTML. Puede usar expresiones regulares para buscar la información que necesita en el océano de datos, o puede usar una biblioteca de funciones para interpretar HTML y también puede obtener los datos que necesita.

En Python, usaremos un módulo llamado Beautiful Soup para analizar datos HTML. Puedes instalarlo con la ayuda de un instalador como pip y ejecutar el siguiente código:

pip install beautifulsoup4

O también puedes compilarlo basándose en el código fuente. Los pasos de instalación detallados se pueden ver en la página de documentación de este módulo.

Una vez completada la instalación, generalmente seguiremos los siguientes pasos para implementar el rastreo web:

Enviar una solicitud a la URL

Recibir la respuesta

Análisis de respuesta para encontrar los datos requeridos

Como demostración, usaremos el blog del autor/').read()

A continuación, pase la respuesta al módulo previamente instalado:

p>

desde bs4 import BeautifulSoup#preparando la sopa deliciosa ;)soup = BeautifulSoup(página web, "html5lib")

¡Tenga en cuenta que aquí hemos seleccionado html5lib! como analizador. Según la documentación de BeautifulSoup, también puede elegir un analizador diferente.

Analizando HTML

Después de pasar el HTML a BeautifulSoup, podemos probar algunas directivas.

Por ejemplo, para comprobar que el código de marcado HTML es correcto, puede verificar el título de la página (en el intérprete de Python):

>>> sopa.títuloCharla técnica trascendental>>> sopa .title.text

u'Transcendental Tech Talk'

>>

A continuación, comience a extraer elementos específicos de la página. Por ejemplo, quiero extraer una lista de títulos de artículos en un blog. Para hacer esto, necesito analizar la estructura del HTML, lo cual puedo hacer con la ayuda del inspector de Chrome. Otros navegadores ofrecen herramientas similares.

Utiliza el inspector de Chrome para comprobar la estructura HTML de una página.

Como puedes ver, todos los títulos de las publicaciones tienen etiquetas h3 y dos atributos de clase: título de la publicación y clase de título de entrada. . Por lo tanto, al buscar todos los elementos h3 con la clase de título posterior, se obtendrá una lista de títulos de artículos para la página. En este ejemplo, usamos la función find_all proporcionada por BeautifulSoup y determinamos la clase requerida a través del parámetro class_:

>>> titles = sopa.find_all('h3', class_ = 'post-title' ) #Obteniendo todos los títulos>>> títulos[0].textu'\nKolkata #BergerXP IndiBlogger, información sobre marketing y algunos consejos para blogs\n'>>>

Solo entradas mediante búsqueda de clase A posterior al título debería producir los mismos resultados:

>>> titles = sopa.find_all(class_ = 'post-title') #Obtener todos los elementos con clase post-title>>>> titles[0].textu ' \nKolkata #BergerXP

Encuentro de IndiBlogger, información sobre marketing y algunos consejos para blogs\n'>>>