Deberian sacar un curso avanzado para que complementen el uso de cada uno de los archivos y configuraciones que no van a explicar.
Scrapy: el framework estrella
Qué aprenderás sobre el framework Scrapy
Instalación de Scrapy en Mac OS
El framework asíncrono: Scrapy
Instalación de Scrapy en Windows
Instalación de Scrapy en Linux
Nuestro primer Hello World
Recordando generadores e iteradores
Trabajando con Scrapy
Scrapy Shell
Nuestro primer proyecto: estructura de carpetas
Spiders
Usando XPath para extraer datos
Guardando los datos
Seguir links: response.follow
Múltiples callbacks
Pasando argumentos a nuestro spider
Configuraciones útiles
Proyecto: Platzi Intelligence Agency
Platzi Intelligence Agency
Inicializando el repositorio local
Utilizando XPath en el sitio de la CIA
Spider: CIA
Finalizando la creación del spider
Creando el frontend de nuestra aplicación
Deploy a GitHub Pages
Deploy en Scrapy Cloud
Bonus: automatizar procesos con la API
Conclusiones
Evitar meterse en problemas
El siguiente paso en tu camino
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 19
Preguntas 2
Deberian sacar un curso avanzado para que complementen el uso de cada uno de los archivos y configuraciones que no van a explicar.
- pipelines.py: permite modificar los datos desde que entran al spider (scripts que extraen información) hasta el final.
- middlewares.py: trabaja con un concepto denominado señales: controla eventos que suceden entre los requests y la captura de información.
- items.py: transforma los datos que se reciben del requests.
- _ init _.py: define que todos los archivos en la carpeta son un módulo de python.
- Folder spiders: en donde se crearan los scripts.
- settings.py: archivo con configuraciones del uso de Scrapy.
Excelente el proceso correcto de crear un nuevo proyecto, no solo para usar scraper, son las practicas correctas para cada proyecto.
Excelente Facundo.
Resumen:
■■■■■■■
scrapy startproject name_of_project
. Esto crea una carpeta con el nombre de tu proyecto. Para el proyecto de “quotes” te encontrarás algo así:quotes_scraper
│ scrapy.cfg
│
└───quotes_scraper
│ items.py
│ middlewares.py
│ pipelines.py
│ settings.py
│ __init__.py
│
├───spiders
quotes.jl
quotes.py
__init__.py
Este es el archivo en el que se configuran todos los comportamientos que posee scrapy, aquí se activan los pipelines, para que hagan sus procesos, se puede configurar el nombre del BOT, configurar que el scraper cree un archivo de log, es posible usar parámetros para respetar o no el robots.txt
, guardar caché, administrar cookies, autorizaciones a diferentes fuentes como AWS, realizar delays entre requests; esto son esperas en las request sucede cada tanto tiempo para evitar [DoS] accidentales en la página.
Es de notar que los setings aunque se puedan configurar en el archivo settings.py
pueden ser sobreescritos como atributos de clase dentro de los spiders.
Un spider es una clase que hereda del objeto scrapy.Spider
y se encarga de definir como un sitio o multiples sitios seran escrapeados y también como se hará crawling al instanciarse de la clase respectiva, en resumen como extraen datos estructurados de las páginas.
En un ejemplo rápido los spiders se ven así:
class MySpider(scrapy.Spider):
name = 'myspider_at_platzi'
# Propiedades específicas de este spider.
allowed_domains = ['example. com']
#Multiples urls
start_urls = [
'...example.com/1.html',
'...example.com/2.html',
'...example.com/3.html',
]
# La función que hace request y autenticación opcional.
def start_requests(self):
return [scrapy.FormRequest("html....example.com/login",
formdata={'user': 'Alejandro', 'pass': 'secret_word'},
callback=self.logged_in)]
Los spider buscan extraer datos estructurados de data no estructurada, los spiders pueden retornar o no (yield
) data te tipo item . Estos Items pueden funcionar para definir la metadata que se pude usar durante la serialización.En este archivo es posible usar item adaptarser para usar exportadores de los items y que persistan en base de datos.
Es como si estuvieras declarando un modelo de datos en Django o Flask, se ve así:
import scrapy
class Product(scrapy.Item):
name = scrapy.Field()
price = scrapy.Field()
stock = scrapy.Field()
tags = scrapy.Field()
last_updated = scrapy.Field(serializer=str)
Después de que los items han sido escrapeados por un spider, es enviado al pipline en el cual puede procesarse a través de diferentes componentes que se ejecutan secuencialmente.
Es una clase que permite entonces procesar el item con propósitos como :
Los spiders middleware son un framework de hooks dentro de scrapy es un mecanismo de procesamiento donde puedo conetar una funcionalidad perzonalidad para procesar las respeustas que se envían, o lo generado a partir d elso spiders (items)
Se usan cuando:
Que pasaria si un sitio no tiene bien configurado su robots.txt y usamos scrapy en este?
deberia haber un curso un poco mas avanzado donde se vea esta herramienta a profundidad
Las arañas son clases que definen cómo se raspará un determinado sitio (o un grupo de sitios), incluyendo cómo realizar el rastreo (es decir, seguir enlaces) y cómo extraer datos estructurados de sus páginas (es decir, raspar elementos). En otras palabras, las arañas son el lugar donde se define el comportamiento personalizado para rastrear y analizar páginas para un sitio determinado (o, en algunos casos, un grupo de sitios).
En windows, el alias se puede reemplazar por doskey
Los middlewares son código que se ejecutan en cualquier lugar (como el nombre lo dice) pero, básicamente, en Scrapy se usan entre los Spiders y el engine y/o entre el Downloader y el engine. Es decir, para capturar el request antes de enviarlo y/o capturar el response.
En mi caso, lo usé para capturar el request y devolver un response que contenga la página completa usando Selenium
Existen dos tipos de middlewares, los Spider Middleware y los Downloader Middleware (ya se imaginarán donde van)
Los items, so la estructura de nuestros objetos. algo así como un model en el patrón MVC que nos ayuda a estructurar nuestro poryecto y escribir menos código en el spider. Solo creamos una instancia de nuestro objeto en el Spider y hacemos yield del item y es todo, ya que scrapy lo guarda estructurado
Otros elementos importantes son los Rule y Link Extractors. Estos permiten omitir el uso del response.follow que no es bueno usarlo porque no se aprovecha el asincronismo de scrapy
interesante esta clase cada vez se pone mejor !!
Excelente
Creando proyecto con Scrapy desde cero
Innecesario que repita todo de nuevo. Ya se entendió. Usen ese tiempo para explicar más en profundidad como funciona scrapy.
Si alguno no le funciona deactivate, tienen que buscar dentro de su entorno virtual el archivo deactivate.bat, y luego ejecutan el path a ese archivo. En mi caso como mi entorno virtual se llama venv, me movi en la terminal hasta la carpeta padre del entorno virtual y coloque: .\venv\Scripts\deactivate.bat
El proceso correcto de crear un nuevo proyecto, no solo para usar scraper, son las practicas correctas para cada proyecto.
Usar la linea de comando
Usar git
Entorno virtual
Descargar las dependencias
🤖🤖🤖
-pipelines.py: permite modificar los datos desde que entran al spider (scripts que extraen información) hasta el final.
- middlewares.py: trabaja con un concepto denominado señales: controla eventos que suceden entre los requests y la captura de información.
- items.py: transforma los datos que se reciben del requests.
- _ init _.py: define que todos los archivos en la carpeta son un módulo de python.
- Folder spiders: en donde se crearan los scripts.
- settings.py: archivo con configuraciones del uso de Scrapy.
El comando touch en windows 10 no me funcionó, en cambio utilicé la siguiente linea que tiene el mismo resultado:
fsutil file createnew .gitignore 0
Por alguna razón siempre que quiero iniciar el proyecto de Scrapy tengo que cerrar vscode, sino me saca un OSError diciendo que la carpeta module está siendo utilizada, parece que vscode la bloquea cuando se crea.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.