Tutorial de Scrapy: ¿Cómo hacer un rastreador web usando Scrapy?



En este artículo del tutorial de Scrapy, aprenderá a hacer un rastreador web con varias técnicas de extracción de datos y formas de almacenar los datos en una base de datos.

El web scraping es una forma eficaz de recopilar datos de las páginas web, se ha convertido en una herramienta eficaz en . Con varios bibliotecas presente para web scraping como , el trabajo de un científico de datos se vuelve óptimo. Scrapy es un potente marco web que se utiliza para extraer, procesar y almacenar datos. Aprenderemos cómo podemos hacer un rastreador web en este tutorial scrapy, los siguientes son los temas que se tratan en este blog:

¿Qué es Scrapy?

Scrapy es un marco de rastreo web gratuito y de código abierto escrito en Python. Originalmente fue diseñado para realizar , pero también se puede utilizar para extraer datos mediante API. Es mantenido por Scrapinghub ltd.





Scrapy es un paquete completo cuando se trata de descargar las páginas web, procesar y almacenar los datos en el .

Es como una potencia cuando se trata de raspado web con múltiples formas de raspar un sitio web. Scrapy maneja tareas más grandes con facilidad, raspando varias páginas o un grupo de URL en menos de un minuto. Utiliza un tornado que funciona de forma asincrónica para lograr la concurrencia.



Proporciona contratos de araña que nos permiten crear rastreadores genéricos y profundos. Scrapy también proporciona canalizaciones de elementos para crear funciones en una araña que pueden realizar varias operaciones como reemplazar valores en datos, etc.

arquitectura scrapy-scrapy tutorial-edureka

¿Qué es un rastreador web?

Un rastreador web es un programa que busca documentos en la web automáticamente. Están programados principalmente para acciones repetitivas para la navegación automatizada.

¿Cómo funciona?



Un rastreador web es bastante similar a un bibliotecario. Busca la información en la web, categoriza la información y luego indexa y cataloga la información para que la información rastreada sea recuperada y almacenada en consecuencia.

Las operaciones que realizará el rastreador se crean de antemano, luego el rastreador realiza todas esas operaciones automáticamente que crearán un índice. Se puede acceder a estos índices mediante un software de salida.

Veamos varias aplicaciones para las que se puede utilizar un rastreador web:

  • Los portales de comparación de precios buscan detalles de productos específicos para realizar una comparación de precios en diferentes plataformas utilizando un rastreador web.

  • Un rastreador web juega un papel muy importante en el campo de la minería de datos para la recuperación de información.

  • Las herramientas de análisis de datos utilizan rastreadores web para calcular los datos de las visitas a la página y también de los enlaces entrantes y salientes.

  • Los rastreadores también sirven a centros de información para recopilar datos como portales de noticias.

¿Cómo instalar Scrapy?

Para instalar scrapy en su sistema, se recomienda instalarlo en un virtualenv dedicado. La instalación funciona de manera bastante similar a cualquier otro paquete en Python, si está utilizando conda entorno, use el siguiente comando para instalar scrapy:

conda install -c conda-forge scrapy

también puede utilizar el entorno pip para instalar scrapy,

pip instalar scrapy

Puede haber algunas dependencias de compilación dependiendo de su sistema operativo. Scrapy está escrito en Python puro y puede depender de algunos paquetes de Python como:

  • lxml: es un analizador XML y HTML eficiente.

  • parcel: una biblioteca de extracción HTML / XML escrita en la parte superior en lxml

  • W3lib: es un ayudante multipropósito para tratar con URL y codificaciones de páginas web.

  • twisted: un marco de trabajo de red asincrónico

  • criptografía: ayuda en diversas necesidades de seguridad a nivel de red

Comenzando su primer proyecto Scrapy

Para comenzar su primer proyecto scrapy, vaya al directorio o ubicación donde desea guardar sus archivos y ejecute el siguiente comando

scrapy startproject nombre del proyecto

Después de ejecutar este comando, obtendrá los siguientes directorios creados en esa ubicación.

  • nombre del proyecto/

    • scrapy.cfg: despliega el archivo de configuración

  • nombre del proyecto/

    • __init__.py: módulo de Python del proyecto

    • items.py: archivo de definición de elementos del proyecto

    • middlewares.py: archivo del proyecto middlewares

    • pipelines.py: archivo de canalizaciones del proyecto

    • settings.py: archivo de configuración del proyecto

      diferencia entre final finalmente y finalizar
  • arañas /

    • __init__.py: un directorio donde luego pondrás tus arañas

Haciendo tu primera araña

Las arañas son clases que definimos y usos scrapy para recopilar información de la web. Debe subclase scrapy.Spider y definir las solicitudes iniciales a realizar.

Escribe el código para su araña en un archivo de Python separado y lo guarda en el directorio projectname / spiders en su proyecto.

quotes_spider.py

importar clase scrapy QuotesSpider (scrapy.Spider): name = 'quotes' def start_request (self): urls = ['http://quotes.toscrape.com/page/1/', http://quotes.toscrape.com / page / 2 /,] para url en urls: yield scrapy.Request (url = url, callback = self.parse) def parse (self, response): page = response.url.split ('/') [- 2 ] nombre de archivo = 'comillas-% s.html'% página con abrir (nombre de archivo, 'wb') como f: f.write (respuesta.cuerpo) self.log ('archivo guardado% s'% nombre de archivo)

Como puede ver, hemos definido varias funciones en nuestras arañas,

  • nombre: Identifica a la araña, tiene que ser única en todo el proyecto.

  • start_requests (): debe devolver un iterable de solicitudes con las que la araña comenzará a rastrear.

  • parse (): es un método al que se llamará para manejar la respuesta descargada con cada solicitud.

Extrayendo datos

Hasta ahora, la araña no extrae ningún dato, solo guarda el archivo HTML completo. Una araña scrapy generalmente genera muchos diccionarios que contienen los datos extraídos de la página. Usamos la palabra clave yield en Python en la devolución de llamada para extraer los datos.

importar la clase scrapy QuotesSpider (scrapy.Spider): name = 'quotes' start_urls = [http://quotes.toscrape.com/page/1/ ', http://quotes.toscrape.com/page/2/,] def parse (self, response): para comillas en response.css ('div.quote'): yield {'text': quote.css (span.text :: text '). get (),' author ': quote .css (small.author::text ') get (),' tags ': quote.css (div.tags a.tag :: text'). getall ()}

Cuando ejecuta esta araña, generará los datos extraídos con el registro.

Almacenar los datos

La forma más sencilla de almacenar los datos extraídos es mediante exportaciones de feeds, utilice el siguiente comando para almacenar sus datos.

cotizaciones scrapy crawl -o quotes.json

Este comando generará un archivo quotes.json que contiene todos los elementos raspados, serializados en JSON .

Esto nos lleva al final de este artículo donde hemos aprendido cómo podemos hacer un rastreador web usando scrapy en python para raspar un sitio web y extraer los datos en un archivo JSON. Espero que tengas claro todo lo que se ha compartido contigo en este tutorial.

Si este artículo sobre el 'Tutorial de Scrapy' le pareció relevante, consulte el una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo.

Estamos aquí para ayudarlo en cada paso de su viaje y crear un plan de estudios diseñado para estudiantes y profesionales que desean ser un . El curso está diseñado para darle una ventaja inicial en la programación de Python y capacitarlo para los conceptos básicos y avanzados de Python junto con varios me gusta

Si encuentra alguna pregunta, no dude en hacer todas sus preguntas en la sección de comentarios del “Tutorial de Scrapy” y nuestro equipo estará encantado de responder.