Curso de Scrapy

Clases del Curso de Scrapy

Instruido por:
Facundo García Martoni
Facundo García Martoni
Básico
3 horas de contenido
Ver la ruta de aprendizaje
Platzi Intelligence Agency
Proyecto del curso
Platzi Intelligence Agency

Platzi Intelligence Agency es el esfuerzo por recolectar y presentar los documentos y archivos desclasificados de las agencias de inteligencia más poderosas del mundo, como la CIA. Para esta actividad, se hace uso de Web Scraping profesional. El proyecto está desarrollado con un backend de datos hecho en Scrapy y desplegado en Scrapy Cloud, y con un frontend sencillo hecho en vanilla HTML, CSS y JavaScript, desplegado en GitHub Pages.

Curso de Scrapy

Curso de Scrapy

Progreso del curso:0/27contenidos(0%)

Contenido del Curso
Tutoriales de estudiantes
Preguntas de estudiantes

Progreso del curso:0/27contenidos(0%)

Scrapy: el framework estrella

Material Thumbnail

Qué aprenderás sobre el framework Scrapy

02:02 min

Material Thumbnail

El framework asíncrono: Scrapy

03:01 min

Material Thumbnail

Instalación de Scrapy en Windows

04:42 min

Instalación de Scrapy en Mac OS

01:34 min

Instalación de Scrapy en Linux

01:29 min

Material Thumbnail

Nuestro primer Hello World

08:31 min

Material Thumbnail

Recordando generadores e iteradores

11:02 min

Trabajando con Scrapy

Material Thumbnail

Nuestro primer proyecto: estructura de carpetas

09:15 min

Material Thumbnail

Usando XPath para extraer datos

11:31 min

Material Thumbnail

Guardando los datos

08:09 min

Material Thumbnail

Seguir links: response.follow

11:45 min

Material Thumbnail

Múltiples callbacks

09:07 min

Material Thumbnail

Pasando argumentos a nuestro spider

05:30 min

Material Thumbnail

Configuraciones útiles

06:37 min

Proyecto: Platzi Intelligence Agency

Material Thumbnail

Platzi Intelligence Agency

01:27 min

Material Thumbnail

Inicializando el repositorio local

05:37 min

Material Thumbnail

Utilizando XPath en el sitio de la CIA

08:11 min

Material Thumbnail

Finalizando la creación del spider

10:05 min

Material Thumbnail

Creando el frontend de nuestra aplicación

10:02 min

Material Thumbnail

Deploy a GitHub Pages

09:48 min

Material Thumbnail

Deploy en Scrapy Cloud

16:52 min

Material Thumbnail

Bonus: automatizar procesos con la API

05:15 min

Conclusiones

Material Thumbnail

Evitar meterse en problemas

02:50 min

Material Thumbnail

El siguiente paso en tu camino

02:27 min

nuevosmás votadossin responder
Julio Sarango
Julio Sarango
Estudiante

¿Por qué no puedo obtener los datos de un sitio que carga con ajax? Debo utilizar alguna otra herramienta como Selenium o con scrapy puedo obtener datos de una página que carga con ajax?

1
Bryan Enmanuel Espinales Coronado
Bryan Enmanuel Espinales Coronado
Estudiante

Por qué a mi archivo tutorial no se agrega el .html

Screenshot_1.png

Aquí mi código

import scrapy

classQuotesSpider(scrapy.Spider):
    name = 'quotes'
    start_urls = [
        
    ]

    defparse(self, response):withopen('resultados', 'w', encoding='utf-8') as f:
            f.write(response.text)
1
Danilo Valenzuela
Danilo Valenzuela
Estudiante

Estoy trabajando desde WSL y me sale este error. Alguien lo ha podido solucionar?

Capture.PNG
1
Mauricio L R
Mauricio L R
Estudiante

Esta librería sirve para hacer scraping sobre sitios SPA? creados con React o Angular?

1
Mauricio L R
Mauricio L R
Estudiante

Esta librería sirve para hacer scraping sobre sitios SPA? creados con React o Angular?

1
Mauricio L R
Mauricio L R
Estudiante

Hola,
Esta herramienta sirve para hacer scraping de sitios SPA construidos con react o angular?

2
Andrés Xavier Vargas Vera
Andrés Xavier Vargas Vera
Estudiante

No existe el Curso Profesional de Ciencia de datos…?

1
Andrés Xavier Vargas Vera
Andrés Xavier Vargas Vera
Estudiante

Por qué el profesor no hace uso de el archivo settings . py? también se puede hacer desde ahí? o no?

1
Natalia Gonzalez Palacios
Natalia Gonzalez Palacios
Estudiante

Hola,

Cuando ejecuto el còdigo no me genera el archivo resultados. Lo he revisado varias veces y no veo el error

import scrapy

classQuotesSpider(scrapy.Spider):
    name= 'quotes'
    starts_urls = ['platzi no me deja poner la url']


    defparse(self, response):withopen ('resultados.html', 'w', encoding= 'utf-8') as f: 
            f.write(response.text))

ESTO ME SALE EN LA CONSOLA

C:\Users\NATALIA\Documents\Curso_Python\scrapy-code\hello_world\tutorial (master)
(venv) λ scrapy crawl quotes
2021-05-10 18:56:28 [scrapy.utils.log] INFO: Scrapy 2.5.0 started (bot: tutorial)
2021-05-10 18:56:28 [scrapy.utils.log] INFO: Versions: lxml 4.6.3.0, libxml2 2.9.5, cssselect 1.1.0, parsel 1.6.0, w3lib 1.22.0, Twisted 21.2.0, Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:20:19) [MSC v.1925 32 bit (Intel)], pyOpenSSL 20.0.1 (OpenSSL 1.1.1k 25 Mar 2021), cryptography 3.4.7, Platform Windows-10-10.0.19041-SP0
2021-05-10 18:56:28 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.selectreactor.SelectReactor
2021-05-10 18:56:28 [scrapy.crawler] INFO: Overridden settings:
{‘BOT_NAME’: ‘tutorial’,
‘NEWSPIDER_MODULE’: ‘tutorial.spiders’,
‘ROBOTSTXT_OBEY’: True,
‘SPIDER_MODULES’: [‘tutorial.spiders’]}
2021-05-10 18:56:29 [scrapy.extensions.telnet] INFO: Telnet Password: 7d8f048769986f3c
2021-05-10 18:56:29 [scrapy.middleware] INFO: Enabled extensions:
[‘scrapy.extensions.corestats.CoreStats’,
‘scrapy.extensions.telnet.TelnetConsole’,
‘scrapy.extensions.logstats.LogStats’]
2021-05-10 18:56:31 [scrapy.middleware] INFO: Enabled downloader middlewares:
[‘scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware’,
‘scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware’,
‘scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware’,
‘scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware’,
‘scrapy.downloadermiddlewares.useragent.UserAgentMiddleware’,
‘scrapy.downloadermiddlewares.retry.RetryMiddleware’,
‘scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware’,
‘scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware’,
‘scrapy.downloadermiddlewares.redirect.RedirectMiddleware’,
‘scrapy.downloadermiddlewares.cookies.CookiesMiddleware’,
‘scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware’,
‘scrapy.downloadermiddlewares.stats.DownloaderStats’]
2021-05-10 18:56:31 [scrapy.middleware] INFO: Enabled spider middlewares:
[‘scrapy.spidermiddlewares.httperror.HttpErrorMiddleware’,
‘scrapy.spidermiddlewares.offsite.OffsiteMiddleware’,
‘scrapy.spidermiddlewares.referer.RefererMiddleware’,
‘scrapy.spidermiddlewares.urllength.UrlLengthMiddleware’,
‘scrapy.spidermiddlewares.depth.DepthMiddleware’]
2021-05-10 18:56:31 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2021-05-10 18:56:31 [scrapy.core.engine] INFO: Spider opened
2021-05-10 18:56:31 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2021-05-10 18:56:31 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2021-05-10 18:56:31 [scrapy.core.engine] INFO: Closing spider (finished)
2021-05-10 18:56:31 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{‘elapsed_time_seconds’: 0.020102,
‘finish_reason’: ‘finished’,
‘finish_time’: datetime.datetime(2021, 5, 10, 23, 56, 31, 582766),
‘log_count/INFO’: 10,
‘start_time’: datetime.datetime(2021, 5, 10, 23, 56, 31, 562664)}
2021-05-10 18:56:31 [scrapy.core.engine] INFO: Spider closed (finished)

0
Javier Guevara
Javier Guevara
Estudiante

Adjunto mi código. Me arroja un json vacío y ya revisé por typos. Alguna idea?

import scrapy

#XPath# links: '//a[starts-with(@href, "collection") and (parent::h3|parent::h2)]/@href'# title: '//h1[@class="documentFirstHeading"]/text()'# paragraph: '//div[@class="field-item even"]/p/text()'classSpiderCIA(scrapy.Spider):
    name='cia'
    start_urls = [
        'https://www.cia.gov/readingroom/special-collections-archive'
    ]
    custom_settings = {
        'FEED_URI': 'cia.json',
        'FEED_FORMAT': 'json',        
        'FEED_EXPORT_ENCODING' : 'utf-8',
        #'CONCURRENT_REQUESTS': 24,#'MEMUSAGE_LIMIT_MB': 2048,#'MEMUSAGE_NOTIFY_MAIL' : ['jrguevaral@gmail.com'],'USER_AGENT' :  'JaviGuevara'
    }

    defparse(self, response):
        links = response.xpath('//a[starts-with(@href, "collection") and (parent::h3|parent::h2)]/@href').getall()
        for link inlinks:yield response.follow(link, callback=self.parse_link, cb_kwargs={'url': response.urljoin(link)})
    
    defparse_link(self, response, **kwargs):
        link = kwargs['url']
        title = response.xpath('//h1[@class="documentFirstHeading"]/text()').get()
        paragraph = response.xpath('//div[@class="field-item even"]/p/text()').get()

        yield {
            'url': link, 
            'title' : title, 
            'body' : paragraph
        }
0