Raspado web con Python

Raspado web con Python
El raspado web es una forma automatizada de extraer y procesar información de los sitios web de Internet en una cantidad muy grande. Los datos en los sitios web de Internet no están estructurados, lo que se puede recopilar y estructurar a través del raspado web. Motores de búsqueda como Google, Bing, Yahoo tienen bots que raspan los datos de los sitios web de Internet y los indexan en sus páginas de búsqueda. Los datos también se pueden extraer utilizando API, que es probablemente una de las mejores formas de extraer datos de la web. Sitios web famosos como Facebook, Google, Amazon proporcionan a los usuarios API bien estructuradas para interactuar con los datos, pero no verá estas API en todas partes.

Por ejemplo, si desea obtener actualizaciones periódicas sobre sus productos favoritos para ofertas de descuento o desea automatizar el proceso de descarga de episodios de su primera temporada favorita por uno, y el sitio web no tiene ninguna API para ello, entonces la única opción Te queda con el raspado web.El raspado web puede ser ilegal en algunos sitios web, dependiendo de si un sitio web lo permite o no. Los sitios web usan "Robots.archivo txt "para definir explícitamente las URL que no están permitidas. Puede verificar si el sitio web lo permite o no agregando "Robots.txt "con el nombre de dominio del sitio web. Por ejemplo, https: // www.Google.com/robots.TXT

En este artículo, usaremos Python para rasparse porque es muy fácil de configurar y usar. Tiene muchos bibliotecarios incorporados y de terceros que se pueden usar para raspar y organizar datos. Usaremos dos bibliotecas de Python "Urllib" para obtener la página web y "Beautifulsoup" para analizar la página web para aplicar operaciones de programación.

Cómo funciona el raspado web?

Enviamos una solicitud a la página web, desde donde desea raspar los datos. El sitio web responderá a la solicitud con el contenido HTML de la página. Luego, podemos analizar esta página web a BeautifulSoup para su posterior procesamiento. Para obtener la página web, usaremos la biblioteca "Urllib" en Python.

Urllib descargará el contenido de la página web en HTML. No podemos aplicar operaciones de cadena a esta página web HTML para extracción de contenido y procesamiento adicional. Usaremos una biblioteca de Python "beautifulsoup" que analizará el contenido y extraerá los datos interesantes.

Artigación de artículos de Linuxhint.comunicarse

Ahora que tenemos una idea de cómo funciona el raspado web, hagamos un poco de práctica. Intentaremos raspar títulos y enlaces de artículos de Linuxhint.comunicarse. Así que abre https: // Linuxhint.com/ en tu navegador.

Ahora presione CRTL+U para ver el código fuente HTML de la página web.

Copie el código fuente y vaya a https: // htmlformatter.com/ para fusionar el código. Después de fusionar el código, es fácil inspeccionar el código y encontrar información interesante.

Ahora, nuevamente copie el código formateado y péguelo en su editor de texto favorito como Atom, Texto Sublime, etc. Ahora rasparemos la información interesante usando Python. Escriba lo siguiente

// Instalar una hermosa biblioteca de sopa, Urllib viene
preinstalado en Python
ubuntu@ubuntu: ~ $ sudo pip3 install bs4
ubuntu@ubuntu: ~ $ python3
Python 3.7.3 (predeterminado, 7 de octubre de 2019, 12:56:13)
[GCC 8.3.0] en Linux

Escriba "ayuda", "copyright", "créditos" o "licencia" para obtener más información.

// Importar urllib
>>> importar urllib.pedido
// Importar beautifulsoup
>>> De BS4 Import beautifulsoup
// Ingrese la URL que desea buscar
>>> my_url = 'https: // linuxhint.com/
// Solicitar la página web de URL usando el comando Urlopen
>>> cliente = urllib.pedido.Urlopen (my_url)
// Almacene la página web HTML en la variable "HTML_PAGE"
>>> html_page = cliente.leer()
// Cierre la conexión de URL después de obtener la página web
>>> cliente.cerca()
// analiza la página web HTML a Beautifulsoup para rasparse
>>> page_soup = beautifulSoup (html_page, "html.analizador ")

Ahora veamos el código fuente de HTML que acabamos de copiar y pegamos para encontrar cosas de nuestro interés.

Puede ver que el primer artículo enumerado en Linuxhint.com se llama "74 ejemplos de operadores de bash", encuentre esto en el código fuente. Está encerrado entre las etiquetas de encabezado, y su código está



class = "Categoría-1561"> Programación bash


Title = "74 Ejemplos de operadores de bash"> 74 operadores de bash
Ejemplos


El mismo código se repite una y otra vez con el cambio de solo títulos de artículos y enlaces. El siguiente artículo tiene el siguiente código HTML



class = "Categoría-1343"> Ubuntu
barniz


title = "Cómo configurar el caché de barniz en Ubuntu 18.04 ">
Cómo configurar el caché de barniz en Ubuntu 18.04


Puede ver que todos los artículos, incluidos estos dos, están encerrados en el mismo "

"Etiqueta y use la misma clase" Título de entrada ". Podemos usar la función "FindAll" en una hermosa biblioteca de sopa para encontrar y enumerar todo "

"Tener clase" Título de entrada ". Escriba lo siguiente en su consola Python

// Este comando encontrará todo "

"Etiqueta elementos que tienen clase
"Título de entrada". La salida se almacenará en una matriz.
>>> Artículos = Page_Soup.findall ("H2" ,
"clase": "Tito de entrada")
// El número de artículos que se encuentran en la página principal de Linuxhint.comunicarse
>>> Len (artículos)
102
// Primero extraído "

"Elemento de etiqueta que contiene nombre y enlace del artículo
>>> artículos [0]


title = "74 Ejemplos de operadores de bash">
74 ejemplos de operadores bash


// segundo extraído "

"Elemento de etiqueta que contiene nombre y enlace del artículo
>>> artículos [1]


title = "Cómo configurar el caché de barniz en Ubuntu 18.04 ">
Cómo configurar el caché de barniz en Ubuntu 18.04


// Mostrar solo texto en etiquetas HTML usando la función de texto
>>> artículos [1].texto
'Cómo configurar el caché de barniz en Ubuntu 18.04 '

Ahora que tenemos una lista de los 102 html "

"Elementos de etiqueta que contiene enlace del artículo y título de artículo. Podemos extraer ambos artículos de enlaces y títulos. Para extraer enlaces de las etiquetas "", podemos usar el siguiente código

// El siguiente código extraerá el enlace desde primero

elemento de etiqueta
>>> Para el enlace en artículos [0].find_all ('a', href = true):
… Imprimir (enlace ['href'])

https: // linuxhint.com/bash_operator_examples/

Ahora podemos escribir un bucle for que itera a través de cada "

"Elemento de etiqueta en la lista de" artículos "y extrae el enlace y el título del artículo.

>>> Para I en el rango (0,10):
… Imprimir (artículos [I].texto)
... para enlace en artículos [i].find_all ('a', href = true):
... imprimir (enlace ['href']+"\ n")

74 ejemplos de operadores bash
https: // linuxhint.com/bash_operator_examples/
Cómo configurar el caché de barniz en Ubuntu 18.04
https: // linuxhint.com/varnet_cache_ubuntu_1804/
Pinetime: un reloj inteligente amigable de Linux
https: // linuxhint.com/pinetime_linux_smartwatch/
10 mejores computadoras portátiles de Linux baratas para comprar con un presupuesto
https: // linuxhint.com/best_cheap_linux_laptops/
HD juegos remasterizados para Linux que nunca tuvieron un lanzamiento de Linux ..
https: // linuxhint.com/hd_remastered_games_linux/
60 aplicaciones de grabación de pantalla FPS para Linux
https: // linuxhint.com/60_fps_screen_recording_apps_linux/
74 ejemplos de operadores bash
https: // linuxhint.com/bash_operator_examples/
... Snip ..

Del mismo modo, guarda estos resultados en un archivo JSON o CSV.

Conclusión

Sus tareas diarias no son solo de administración de archivos o ejecución de comandos del sistema. También puede automatizar tareas relacionadas con la web, como la automatización de descarga de archivos o la extracción de datos raspando la web en Python. Este artículo se limitó solo a una extracción de datos simple, pero puede hacer una gran automatización de tareas utilizando "urllib" y "beautifulsoup".