undefined
Blog > Web Scraping > Post

Una Guía Completa para Crear un Web Crawler con Python

Wednesday, December 28, 2022

¿Ha pensado cómo los motores de búsqueda populares como Google, Yahoo y Bing pueden buscar información que quiere entre millones de páginas web y le ofrecen los artículos más relativos en milisegundos?

 

Lo hacen aprovechando un bot que se llama web crawler. Navega por Internet, recopila enlaces correspondientes y las almacena. Es particularmente útil para los motores de búsqueda e incluso para el web scraping. Puede codificar este web crawler por su cuenta y todo lo que necesita es conocer algunos prerrequisitos básicos del lenguaje de programación Python.  

 

Si está buscando alternativas que no requieran codificación, no se preocupe, también están listas para usted. En este artículo se presentarán los métodos tanto con codificación como sin codificación para crear un web crawler.

 

 

Alternativa de Python: Crear Web Crawler sin Codificación

Puede construir un web crawler usando python Scrapy, sin embargo, requiere conocimiento en codificación. Por lo tanto, ¿existen alternativas de Python para crear un web crawler fácilmente? Sí, hay unas herramientas y aplicaciones disponibles, pero la herramienta mejor será Octoparse.

 

Octoparse es una herramienta de web scraping muy fácil de usar. Es una de las herramientas más utilizadas para extraer datos masivos de múltiples sitios web. Admite hasta 10.000 enlaces de una sola vez. Algunas de las características más atractivas de Octoparse se presentan a continuación:

 

    1. Es fácil de usar aunque no sabe nada de codificación.
    2. La función de detección automática le ayuda a crear crawler de manera mucho más fácil.
    3. Se pueden exportar los datos extraídos en múltiples formatos de archivo e incluso a labase de datos.
    4. Hay muchas plantillas preestablecidas de sitios web populares con las que puede scrapear los datos solo con unos clics.
    5. Las tareas de scrapingse pueden programar en cualquier momento: por hora, por día o por semana.
    6. El mecanismo de rotación de IP evita que su IP esté bloqueada.

 

 

¿Cómo Crear un Web Crawler con Python desde Scratch?

Python proporciona múltiples bibliotecas y marcos para crear un web crawler. Los dos métodos principales ampliamente utilizados para el web scraping son:

  • WebCrawler usando la biblioteca BeautifulSoup de Python
  • Web Crawler usando el marco Scrapy de Python

 

Antes de aprender la codificación, analicemos los méritos y defectos de cada método.

 

Méridos de Scrapy

  • Es un marco de web scraping en lugar de una biblioteca de Python.
  • Es recurso abierto.
  • Funcionamás rápido en comparación con otros métodos de web scraping.
  • La comunidad de desarrollo de Scrapy es vasta y poderosa en comparación con otras comunidades de web scraping.

 

Defectos de Scrapy

  • Es un poco más complejo queotros métodos de web scraping.
  • Contiene códigosmás pesados que no son apropiados para los proyectos a pequeña escala.
  • La documentación es difícil de entender para los principiantes

 

Méritos de BeautifulSoup

  • BeautifulSoup es fácil de usar e incluso para los principantes.
  • Perfecto para proyectos pequeños ya que es ligero y menos complejo.
  • Documentación fácilmente comprensible para principiantes.

 

Defectos de BeautifulSoup

  • Es más lento en comparación con otros métodos de web scraping.
  • No se puede aplicar a proyectos más significativos.
  • Tiene una dependencia externa de Python.

 

Crear un rastreador web con Python Scrapy

En esta parte, tratamos de extraer datos de amazon como ejemplo. Dado que scrapy proporciona un marco propio, no necesitamos crear un archivo de código. Podemos lograr resultados deseados  ingresando comandos simples en la interfaz del scrapy shell.

 

1. Configuración de Scrapy

Abra su cmd.

Ejecute la instrucción:

“pip install scrapy”

Cuando se ha instalado el scrapy, escriba la instrucción:

“scrapy shell”.

Esto iniciará la interfaz de línea de instrucción en el cmd.

 

2. Sacar el sitio web

Utilice la instrucción de fetch para obtener la página web de destino como un objeto de respuesta.

fetch(https://www.amazon.in/s?k=headphones&ref=nb_sb_noss)

Se dará cuenta de que la línea de instrucción volverá True.

Ahora abra la página web recuperada usando la instrucción:

view(response)

Abrirá la página web en el navegador predeterminado

 

3. Extraerdatos del sitio web

Haga clic con el botón derecho del ratón en el título del primer producto de la página y seleccione inspectar elemento.

Notará que hay muchas clases CSS asociadas  

Copíe una de ellas en su portapapel.

Ejecute la instrucción en el scrapy shell: 

response.css(‘class_name::text’).extract_first()

Se dará cuenta de que la instrucción volverá el nombre del primer producto en la página

Si funciona con éxito, continuará extrayendo todos los nombres del producto.

response.css(‘class_name::text’).extract()

Verá que la lista de productos en la página se muestra en la interfaz de scrapy shell.

 

Crear un Web Crawler con Python BeautifulSoup

De esta manera, intendaremos descargar datos estadísticos sobre los efectos del Coronavirus desde el sitio web de Worldometers. Es un tipo de aplicación muy interesante que puede ser útil para extraer y guardar datos con web scraping.

 

Código de referencia:

  • # importing modules
  • import requests
  • from bs4 import BeautifulSoup
  • import pandas as pd
  • # URL for scrapping the data
  • url = 'https://www.worldometers.info/coronavirus/countries-where-coronavirus-has-spread/'
  • # get URL html
  • page = requests.get(url)
  • soup = BeautifulSoup(page.text, 'html.parser')
  • data = []
  • # soup.find_all('td') will scrape every
  • # element in the url's table as
  • # td in HTML is 'table data'
  • data_iterator = iter(soup.find_all('td'))
  • # data_iterator is the iterator of the table
  • # This loop will keep repeating till there is
  • # data available in the iterator
  • while True:
  • try:
  • country = next(data_iterator).text
  • confirmed = next(data_iterator).text
  • deaths = next(data_iterator).text
  • continent = next(data_iterator).text
  • append((
  • country,
  • confirmed,
  • deaths,
  • continent
  • ))
  • # StopIteration exception is raised when
  • # there are no more elements left to
  • # iterate through
  • except StopIteration:
  • break
  • # Sort the data by the number of confirmed cases
  • sort(key = lambda row: row[1], reverse = True)
  • df = pd.DataFrame(data, columns = ['Country', 'Confirmed','Deaths','Continent'])
  • print(df[1:100])

 

 

Conclusión

Web scraping es un método fácil cuando quiere adquirir información de manera gratuita de las bases de datos públicamente accesibles. Facilita el trabajo manual que contiene la descarga de datos masivos. Si se entrena adecuadamente, puede ser una habilidad muy útil para propósitos comerciales y profesionales.

 

Además de los dos métodos explicados en este artículo, aún hay numerosas maneras para hacer el web scraping. Cada manera tiene sus méritos y defectos, su nivel de facilidad y complejidad de la aplicación. El método que se elija para un proyecto determinado varía con los parámetros del proyecto. Por lo tanto, sería necesario que un desarrollador sepa múltiples métodos. Deseamos que este artículo pueda hacer más profunda su comprensión en web scraping e inspirarle en su viaje de web scraping. Si ahora no sabe cómo empezar la primera extracción de datos, ¿por qué no prueba Octoparse? Será su mejor opción.

¡Descarga Octoparse para comenzar con el web scraping o contáctanos para cualquier
pregunta sobre el web scraping!

Contactarnos Descargar
Usamos cookies para mejorar tu experiencia de navegación. Lee sobre cómo usamos las cookies y cómo puedes controlarlas haciendo clic en la configuración de cookies. Si continúas utilizando este sitio, acepta nuestro uso de cookies.
Aceptar Rechazar