Como scrapear con Scrapy

Pues nada va siendo el momento de hablar de que es exactamente scrapy, la parte más simplificada sería decir que es una librería donde podemos crear un crawler o rastreador o bien un scrapper o raspador como han dicho últimamente.

Lo cierto es que es uno de los scrapers más completos que he visto ahora mismo, pero también es de los que más lío te pueden dar y quizás no te interese en todo momento utilizar este tipo de raspadores.

Este scrapeador está creado en Python algo que ayuda mucho a nuestra manera de programar que es en también como no puede ser en Python.

¿Cómo instalo Scrapy?

La instalación lo hice de una manera bastante fácil y cómoda, nada más y nada menos que utilizando el código en el cmd o shell del ordenador sin más misterio que ese.

pip install Scrapy

También tienes la opción de usar conda install -c conda-forge scrapy si utilizas Conda,  (yo lo uso como sabéis para temas de machine learning) del cual siempre se puede hablar si queréis u os interesa.

Es importante que entréis en la web donde tienes toda la información de scrapy aunque en inglés para que veas posibles documentaciones que te puedan hacer falta para más adelante.

En estos casos que serán ejemplos no nos hacen falta tener un hosting o algo en la nube ded¡cado ya que son proyectos pequeños pero si vas a dedicarte a esto de manera más profesional o con un conjunto de información a scrapear muy alto sería muy recomendable.

  • lxml eficiente parseador XML y HTML
  • parsel extractor de HTML y XML de la librería lxml
  • w3lib para varias cosas nos vale esto, podemos mejorar URL y codificadores de páginas web
  • twisted marco de asíncrono
  • cryptography y pyOpenSSL, nuestro gran aliado para las necesidades de seguridad a nivel de red

Como usar scrapy con Python

Voy a ir explicandotelo respecto al video que tenemos ya grabado y poco a poco, así no te empachas de información y así también te da tiempo a poder asimilar bien todos los datos.

Como puedes ver en el video hemos hecho los siguientes pasos:

Crear proyecto

El primer paso de todos es crear el proyecto, algo que si no lo hacemos difícilmente podemos trabajar en él.

Para ello lo que he hecho ha sido crear una carpeta que la he llamado «scrapy» y dentro de ella dentro de Visual Studio Code he escrito lo siguiente en el shall.

scrapy startproject tutorial

Una vez escrito esto vamos a ver como se nos han creado diferentes carpetas, entre ellas la dos de tutorial, spider…

Este es el ejemplo de lo que nos ha creado dentro de la dentro de la carpeta y una vez dentro de scarpy, dentro de tutorial.

Como todo esto se ha creado solo poniendo el código que hemos mencionado anteriormente.

como vereis hay varios archivos dentro de scrapy, y ahora mismo no estamos usando ninguno si no que encima luego crearemos otro acabando en .py (para quien no lo sepa es la terminación de los scripts creado en python, hay otros más pero ahora mismo solo nos interesa hablar de este), más adelante hablaremos y utilizaremos los diferentes archivos que tenemos para ver como utilizar una base de datos y demás con nuestro scrapy.

Crear nuestra primera araña

Ahora nos metemos a programar y para ello hay que tener unas pequeñas nociones de ello, pero aún así voy a intentar explicar de una manera más sencilla y con palabras mundanas todo lo que tenemos:

import scrapy
 
class QuoteSpider(scrapy.Spider):
    name = ‘quotes’
    start_urls = [
                            ‘http://quotes.toscrape.com/’,
                          ]
    def parse(self, response):
         title = response.css(‘title’)extract()
         yield {‘titletext’:title}

Empezaremos con la parte que está en naranja:

Es la llamada a la librería, con ella importamos todas la funciones que tenemos de scrapy en este caso.

La parte verde:

Aquí es la parte donde definimos nuestra araña, que es quotes y damos la información de donde queremos coger la información, en este caso solo hemos puesto una url, pero podemos poner todos los que queramos agregando más urls debajo de la que tenemos escrita pero acabando siempre con una coma.

(En el video no lo he hecho MAL POR MI, porque aunque no hace falta, la manera correcta es siempre que acabe en coma para poder ampliar).

Parseado en azul:

Es la parte que utilizamos para manejar la respuesta que nos entrega la araña en cada solicitud de las que hagamos.

Dentro de ese parse tenemos un response que es el que contiene el contenido de la web scrapeada y también tiene ciertos métodos que nos pueden ser de utilidad.

Esto muy simplificado es lo que hacemos y las partes que necesitamos

Ejecutar nuestra araña (crawl)

Arrancamos el programa:

para esto tenemos que hacer el crawleo de la URL que nos interesa y es exactamente la que hemos escrito antes.

El código que tenemos que escribir es este.

scrapy crawl quotes
 
No creo que haga falta explicarlo mucho pero bueno que no quede como que no hay interés.
Con scrapy estamos haciendo un llamamiento, crawl es la acción que queremos realizar y quotes es de que queremos realizar la  acción, recordad (o mirar arriba en el script) que lo hemos llamado quotes a la araña.

Primera araña con scrapy

En este caso como podemos ver como sacamos el título y dependiendo como lo escribas sacas con el código html o solo el texto.

Más adelante aunque lo ampliaré aquí veremos como sacar más información de la web como son los textos, etiquetas… pero irá más adelante en próximos videos y ahí es donde podréis seguir este hilo.

Mi conclusión

Scrapy es una librería muy potente y aunque está claro que no es la más fácil de usar es de lo más completo.

Más adelante veremos otras librerías donde usaremos solo unas pequeñas partes de lo que estamos usando aquí como el response por ejemplo y se nos hará más fácil incluso de entender y de usar.

Es por cosas como esta que a veces es casi mejor empezar por lo de dificultad más alta para luego empezar a atacar las variantes que tenemos.

Scrapy ya vereis todo lo que se puede hacer  y que nivel puedes llegar a considerar scrapear, vamos, que si te lo curras sacas tu mini-screaing frog o incluso algo más potente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *