No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de Scrapy

Curso de Scrapy

Facundo Garc铆a Martoni

Facundo Garc铆a Martoni

Nuestro primer proyecto: estructura de carpetas

9/27
Recursos

Aportes 19

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

- 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.

Deberian sacar un curso avanzado para que complementen el uso de cada uno de los archivos y configuraciones que no van a explicar.

Resumen:
鈻犫枲鈻犫枲鈻犫枲鈻

Inicializando proyecto y estructura de archivos.

  1. Crea tu espacio de trabajo para tus proyectos con scrapy.
  2. Para inicializar un proyecto de scrapy ejecuta en consola: scrapy startproject name_of_project. Esto crea una carpeta con el nombre de tu proyecto. Para el proyecto de 鈥渜uotes鈥 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
       
  • Conocer la estructura de los proyectos en Scrapy es importante para sacarle provecho al framework.
  • Cada archivo cuenta con un conjunto de utilidades que te permitir谩n crear tu proyecto de manera ordenada.

settings. 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.


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)]

items. py

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)
	

pipelines. py

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 :

  • Limpieza de datos HTML
  • Validaci贸n de que lo escrapeado contiene los campos deseados.
  • Revisi贸n de duplicados.
  • Serializaci贸n de datos ( JSON, XML, CSV, Pickle, Marshal鈥 etc)
  • Almacenamiento de lo escrapeado en una base de datos.
  • Es posible crear corutinas para tomar screenshot de lo renderizado, y guardar lso registros.

middleware. py

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:

  • Necesitamos realizar un post procesamiento de los callbacks del sipider, cambiarm, a帽adir, remover items o quests.
  • Post-procesar las URLS de partida.
  • Manejar las excepciones del spider.

Excelente 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 mis dependencias

Excelente Facundo.

Es triste que el curso no profundiza, la idea de adquirir Platzi es obtener skills, no medios skills.

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).

scrapy.org | Spiders

En windows, el alias se puede reemplazar por doskey

  • He estado desarrollando un proyecto que va a necesitar hacer web scraping de pag铆nas de contenido din谩mico que scrapy por s铆 solo no va a poder hacerlo
    Para esto he usado un middleware
    Pero, qu茅 son?

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

  • Dentro de los items tenemos itemloaders que nos sirven para que los elementos elegidos, es decir, lo que extraemos, pasen por alguna funci贸n predenterminada. Poe ejemplo, si sabemos que viene con espacios, que los quite autom谩ticamente

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

  • Rule usa Link Extractor para definir qu茅 links se deben seguir y que no y si se van a parsear o no
  • Espero que esto les ayude a conocer un poco m谩s de Scrapy y, si les agrada el framweork, investiguen m谩s. Saludos

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.