OpenWebinars

Metodologías

Diferencias entre Scraping, Crawling y Parsing

Te aclaramos tus dudas sobre tres conceptos que a veces se confunden, como son el web scraping, web crawling y parsing.

Rafael Zambrano

Rafael Zambrano

EXPERTO EN ANÁLISIS DE DATOS

Lectura 3 minutos

Publicado el 23 de junio de 2019

Compartir

    Tabla de contenidos

Te aclaramos tus dudas sobre tres conceptos que a veces se confunden, como son el web scraping, web crawling y parsing.

Diferencias entre scraping, 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.

Arañas web o crawlers

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:

  • Crear una copia de todas las webs visitadas.
  • Procesarlas posteriormente para un motor de búsqueda que indexe esas páginas.
  • Crear un sistema de búsquedas rápidas.

El funcionamiento de las estas arañas web es el siguiente:

  • Visitan una serie URLs.
  • Se descarga el contenido de esas páginas, para lo cual hay que realizar un web scraping.
  • Identifican los hiperenlaces.
  • La araña web va a visitar recursivamente estos hiperenlaces.
  • Descarga las nuevas páginas.
  • Analiza los nuevos enlaces.
  • Y así sucesivamente.

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:

Imagen 0 en Diferencias entre Scraping, Crawling y Parsing

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.

Ejemplo

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.

cta-curso-web-scraping

Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.

Compartir este post

También te puede interesar

Icono de la tecnología
Curso

Web scraping

Intermedio
4 h. y 4 min.

Si quieres aprender cómo hacer web scraping con Python de forma sencilla, puedes comenzar realizando este completo curso...

Rafael Zambrano
4.5