Cómo hacer Web Scraping con Python
Descubre cómo poder realizar web scraping de una forma sencilla empleando Python.
Te aclaramos tus dudas sobre tres conceptos que a veces se confunden, como son el web scraping, web crawling y parsing.
Tabla de contenidos
Te aclaramos tus dudas sobre tres conceptos que a veces se confunden, como son el web scraping, web crawling y parsing.
Es importante entender cuáles son sus las diferencias entre estos tres conceptos, por lo que vamos a hacer una introducción a los mismos.
El web scraping consiste básicamente en extraer datos de una o varias páginas web.
El concepto de web crawling es más genérico, y se refiere a la extracción de los hipervínculos de una web.
Normalmente, cuando extraemos datos de una web vamos a tener que parsear esos datos o realizar un parsing para extraer las partes o la información que nos interesa.
Las arañas web o crawlers son programas, normalmente son robots, que inspeccionan páginas de la web de una forma metódica y automatizada.
Su uso más frecuente se centra en:
El funcionamiento de las estas arañas web es el siguiente:
De esta forma se crea una gran tela de araña, de ahí su nombre, conteniendo todas las relaciones entre una gran cantidad de webs.
En la imagen vemos el esquema del funcionamiento de una araña web o crawler:
Tenemos una URL de un servidor, la araña web va a solicitar los datos de servidor, normalmente los va a importar en un código HTML, el cual contiene todos los hipervínculos. La araña web va a extraer estos enlaces, los va a añadir a una lista y va a volver a visitar todos estos enlaces recursivamente, siempre guardando el resultado en un archivo de tipo log.
Vamos a ver un ejemplo de lo anterior utilizando Python.
Para ello nos vamos a conectar a una página web, que en este caso va a ser la página web de un profesor de matemáticas y que contiene una serie de enlaces.
Lo que haremos será un crawler de dos niveles, que accederá a todos los enlaces y dentro de cada uno de ellos va a acceder a los nuevos enlaces que haya. Podríamos seguir incorporando niveles, pero en este ejemplo lo haremos de dos niveles.
El código es el siguiente:
import urllib
from bs4 import BeautifulSoup
url = ‘http://www-math.mit.edu/~gs/’
html = urllib.request.urlopen(url)
soup = BeautifulSoup(html)
tags = soup(‘a’)
print(‘Enlaces en la página principal: \r\n’)
for tag in tags:
print(tag.content[0], tag.get(‘href’))
print(‘\r\n Enlaces de las páginas secundarias: \r\n’)
for tag in tags:
newurl = tag.get(‘href’)
print(‘* Accediendo a los enlaces dentro de la página’,newurl)
try:
if newurl[0:4]==’http’ : html2 = urllib.request.urlopen(newurl)
else: html2 = urllib.request.urlopen(url+newurl)
En el mismo importamos las dos librerías que utilizarmos, como son urllib y Beautiful Soup. La primera nos permite extraer el código HTML de la web, y la segunda nos permite extraer los enlaces, que tienen una estructura fija y comienzan con la etiqueta a en HTML.
Primero extraemos el código HTML, lo transformamos a un objeto de Beautiful Soup, con el cual podemos parsear ese HTML. Después extraemos las etiquetas dónde están los enlaces e imprimimos los enlaces que están en la página principal.
Para cada uno de esos enlaces, con un bucle for, vamos a ir accediendo nuevamente a los mismos e iremos imprimiendo los enlaces que haya dentro de esas webs.
Al ejecutar el código se muestran los enlaces que hay en la página principal y los enlaces de las páginas secundarias.
Si no se puede acceder a un enlace, se muestra el mensaje “Algo ha fallado”, y siempre que se pueda acceder se muestra el número de enlaces que hay y cuáles son.
De esta forma, con pocas líneas de código, podemos generar un crawler simple y acceder a una gran cantidad de enlaces, simplemente haciéndolo de dos niveles de profundidad.
Esta es la idea de un web crawler, de hecho, el primer buscador de Google debería ser algo parecido a este ejemplo, bastante simple, para acceder a enlaces, descargar páginas y volver a buscar enlaces.
Conviértete en un experto del web scrapping, aprende cómo extraer datos de sitios web utilizando Python como lenguaje de programación.
Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.
También te puede interesar
Descubre cómo poder realizar web scraping de una forma sencilla empleando Python.
Si quieres aprender cómo hacer web scraping con Python de forma sencilla, puedes comenzar realizando este completo curso...