Herramientas de usuario

Herramientas del sitio


informatica:programacion:cursos:python_avanzado_proyectos_seguridad:arquitectura_instalacion_scrapy

¡Esta es una revisión vieja del documento!


Arquitectura e instalación de Scrapy

Módulo perteneciente al curso Python avanzado para proyectos de seguridad

Scrapy es un framework para Python que permite realizar tareas de webscraping y procesos de web crawling y análisis de datos.

Este framework también nos permite expandir su funcionalidad y al estar desarrollado en Python puede ejecutarse en los sistemas operativos Linux, Macintosh y Windows.

Aunque el objetivo principal de Scrapy es la extracción de datos de un sitio web, también se puede utilizar para extraer datos mediante el uso de APIs, obtener la estructura de un sitio web o actuar como un extractor información de propósito general. Scrapy tiene las siguientes características:

  • Rápido y robusto: podemos escribir las reglas para extraer los datos y Scrapy hace el trabajo por nosotros.
  • Fácilmente extensible: dada su configuración, podemos generar una nueva funcionalidad sin tener que modificar el código fuente.
  • Multiplataforma: está escrito en Python y puede ejecutarse en Linux, Windows, Mac y BSD.

Scrapy tiene una serie de herramientas con el objetivo de scrapear o extraer información de sitios web de manera fácil y eficiente. Estas herramientas incluyen lo siguiente:

  • Soporte para extraer y seleccionar datos de fuentes HTML/XML usando selectores CSS y expresiones XPath, con métodos para extraer usando expresiones regulares.
  • Una consola interactiva en IPython para probar expresiones CSS y XPath para extraer datos, lo cual es muy útil al crear sus propios métodos.
  • Soporte para exportar registros en múltiples formatos como JSON, CSV y XML
  • Gran extensibilidad, ya que le permite conectar su propia funcionalidad utilizando señales, extensiones y pipelines.

Scrapy se puede decir que es la unión de un Crawler + Scraper

  • Los web crawlers son robots que recorren sitios web, partiendo de una lista de urls y van siguiendo los links encontrados y descargando las páginas para su posterior procesamiento.
  • Los web scrapers son utilizados para extraer datos estructurados (ej: diccionarios) a partir de contenido no estructurado, o semiestructurado (HTML)

Arquitectura de Scrapy

Scrapy permite escanear de forma recursiva los contenidos de un sitio web y aplicar un conjunto de reglas sobre dichos contenidos para extraer información que nos pueda resultar útil. Estos son los principales elementos de la arquitectura:

  • Motor de scrapy (engine): El motor gestiona las peticiones y el flujo de datos entre todos los demás componentes.
  • Planificador (planner): El planificador recibe las peticiones enviadas por el motor y las pone en cola.
  • Downloader: El propósito del downloader es buscar todas las páginas web y enviarlas al motor. El motor posteriormente envía las páginas web a los spyders.
  • Spiders (arañas): Rutinas de código que se encargan de realizar peticiones HTTP a un listado de dominios dados por el cliente y de aplicar reglas en forma de expresiones regulares o XPATH sobre el contenido retornado de las peticiones HTTP.
  • Expresiones XPath: Con las expresiones XPath podemos llegar a un nivel bastante detallado de la información que queremos extraer. Por ejemplo, si queremos sacar los links de descarga de una página basta con obtener la expresión XPath del elemento y acceder al atributo href. Scrapy utiliza un mecanismo basado en expresiones XPATH llamado XPath selectors. Dichos selectores se encargan de aplicar reglas Xpath definidas por el desarrollador y de componer objetos Python que contienen la información extraída.
  • Ítems: Los ítems son los objetos que generan los “XPath selectors”. Los ítems son como contenedores de información ya que permiten almacenar la información que retornan las reglas que aplicamos sobre los contenidos que vamos obteniendo. Básicamente, contienen los campos de la información queremos extraer.
  • Ítem pipelines: Son elementos que procesan los ítems una vez estos han sido analizados por el spyder.

En esta imagen, puede ver una descripción general de la arquitectura Scrapy. La figura muestra en detalle cómo los componentes de la arquitectura Scrapy funcionan juntos donde el motor no se comunica directamente con los downloaders, sino que primero pasa la solicitud HTTP al scheduler o planificador.

IMAAAAAAAAAAAAAAAAAAAAAAAAAAGEN

Como se puede ver en la imagen anterior donde se muestra la arquitectura de scrapy, los spiders usan los ítems para pasar los datos al pipeline. Los spiders le hacen los requests, estos quedan planificados en el scheduler, y estos son los que realizar las peticiones al server, finalmente, cuando responde el server, esta respuesta es enviada de nuevo al spider, de forma que el spider se va retroalimentando con cada petición.

Instalación de Scrapy

Existen diversas herramientas y técnicas que permiten a un desarrollador o analista acceder, consumir y extraer contenido basado en la web.

Scrapy se creó a partir de Twisted, por lo que es capaz de realizar diversas peticiones de forma simultánea.

Del mismo modo, Scrapy utiliza herramientas como BeautifulSoup y el paquete Python XML para facilitar las búsquedas de contenido. Scrapy necesita lxml y OpenSSL como paquetes de requisitos previos para la instalación. Puede instalar Scrapy usando pip con el comando pip install scrapy.

Anaconda mantiene paquetes oficiales de scrapy para Linux, Windows y OS X en la siguiente URL: https://anaconda.org/anaconda/scrapy

Para instalar Scrapy usando conda, ejecute el siguiente comando:

$ conda install -c scrapinghub scrapy

Una vez instalado, es posible usar el comando scrapy desde la línea de comando, usando subcomandos al mismo tiempo.

En esta captura de pantalla, podemos ver todos los subcomandos scrapy disponibles:

IMAAAAAAAAAAAAAAAAAAAAAAGEN

informatica/programacion/cursos/python_avanzado_proyectos_seguridad/arquitectura_instalacion_scrapy.1731654484.txt.gz · Última modificación: por tempwin