No tienes acceso a esta clase

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

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

2D
1H
53M
11S
Curso de Scrapy

Curso de Scrapy

Facundo Garc铆a Martoni

Facundo Garc铆a Martoni

Nuestro primer Hello World

6/27
Recursos

Aportes 30

Preguntas 19

Ordenar por:

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

o inicia sesi贸n.

Quien tenga Windows y no le funcione la instalaci贸n:

  1. Actualizar el venv con
    py -m install --upgrade pip

  2. Instalar el Kit de Microsoft Visual Studio C++ 14.0

  1. corran en Cmander, en venv:
    pip install --upgrade setuptools

  2. Instalen la libreria de Twisted:
    https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
    En mi caso funciono la: Twisted鈥20.3.0鈥慶p38鈥慶p38鈥憌in32.whl

La descargas, la pones en la carpeta y la instala con python
pip install Twisted鈥20.3.0鈥慶p38鈥慶p38鈥憌in32.whl

Y ya deberias de estar listo para instalar:
pip install scrapy autopep8

Respecto a la programaci贸n Orientada a Objetos el profesor David Aroesti me recomend贸 hace un a帽o este libro, buenisimo.

El script en Python y algunas explicaciones

#1) Importar Scrapy
import scrapy

# 2) Definir la l贸gica para extraer toda la informaci贸n que queremos de la 
# p谩gina, en este caso, extraer todo el html
# Esta clase hereda de scrapy.Spider
class QuotesSpider(scrapy.Spider):

    # 3) Se definen los atributos name y start_urls (lista de direcciones web a 
    # a las que se quiere apuntar)
    name = 'quotes'
    start_urls = [
        'http: quotes.toscrape.com/'
    ]

    # 4) se define el m茅todo parse que recibe self y response (hace referencia
    # a la respuesta http en este caso de http: quotes.toscrape.com/' )
    def parse(self,response):
        with open('resultados.html','w',encoding='utf-8') as f:
            f.write(response.text)

**Para ejecutar en la terminal **

$ scrapy crawl quotes

donde quotes se refiere al name que le dimos en la clase QuotesSpider

Si alguien mas le sale este error:
ImportError: DLL load failed while importing _sqlite3: No se puede encontrar el m贸dulo especificado.

Yo lo arregle instalando sqlite3, con pip install pysqlite3

Si no les funciona aun, descarguen sqlite3 en https://www.sqlite.org/download.html
seg煤n su versi贸n

Una vez descargado, extraen y pegan ambos archivos en
C:\Windows\System32

Y despu茅s de todo ejecutan 鈥榮crapy crawl quotes鈥. Y listo
espero que les sirva

El programa corre鈥ero no me retorna nada. No crea el archivo resultados.html. Quiz谩s falle al importar scrapy. La verdad no se. Las instalaciones me generaron errores, tanto en linux como en windows.

Resumen
鈻犫枲鈻犫枲鈻犫枲鈻
Realizaremos un script que me permita obtener los quotoscrape, en este caso que nos escriba en disco un HTML.


import scrapy

#L贸gica para traer toda la data del request.form
class QuotesSpider(scrapy.Spider):
    name = 'quotes'
    start_urls =['url'] # Aqu铆 va la URL del sitio "quotes.toscrape"

    # Define la l贸gica de la data que obtenemos.
    # Crear谩 un archivo con el Html del request.
    def parse(self, response):
        with open('resultados.html','w', encoding='utf-8') as file:
            file.write(response.text)

Luego en consola necesitamos ejecutar el comando scrapy crawl (name_myspider) en este caso name_myspider = 'quotes' y nos devolver谩 el html crudo. 驴Para qu茅? Pues al tener el HTML podemos navegar a trav茅s de los nodos.

El comando que acabas de ejecutar hace parte de un conjunto de templates disponibles para generar spiders de manera r谩pida con objetivos espec铆ficos. Para listar los templates disponibles ejecuta en consola : scrapy genspider -l

scrapy genspider -l
鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed

Este curso esta GENIAL. Ya lo estoy usando para cosas del trabajo.

Como sugerencia recolectada de comentarios y experiencia propia, para los que tengan problemas con windows. Primero actualizar pip, esto lo hacemos con:

pip install --upgrade pip
<h1>Instalar Twisted, existen dos alternativas:</h1>

Desde la terminal:

pip install twisted

O descargar e instalar por wheel. Para ello descargamos wheel.

pip install wheel

Y luego vamos a este sitio Twisted, el cual buscaremos (o podemos filtrar por [ctrl] + [f] ) Twisted, descargamos alguna versi贸n con la extensi贸n .whl, por ejemplo:

Twisted-20.3.0-cp38-cp38-win32.whl

para su instalaci贸n la realizamos con la terminal

Entramos a la carpeta con la terminal y en la terminal:

pip install Twisted-20.3.0-cp38-cp38-win32.whl

de esta manera tenemos Twisted, y wheel instalado en nuestra maquina, ahora hacemos el respectivo install a scrapy y autopep8

pip install scrapy autopep8

Hasta ahora me esta gustando el curso, tambien me gustaria comentar como dato perturbador que todo lo que hicimos en esta clase lo podemos hacer desde consola con el siguiente comando.

curl https://quotes.toscrape.com/ > resultados.html

Si alguien tiene el problema de VSC no importando scrapy cambien el interprete a 3.9.5 .venv

Un Framework sirve para poder escribir c贸digo o desarrollar una aplicaci贸n de manera m谩s sencilla. Es algo que permite una mejor organizaci贸n y control de todo el c贸digo elaborado, as铆 como una posible reutilizaci贸n en el futuro.

Hola, aplico el ccomando scrapy crawl quotes y me aparece varios errores. Entre ellos me dice que no tengo el modulo sqlite3. A alguien le pas贸 lo mismo?

Listo

No me funciona el comando startproject. Si se ejecuta y crea los archivos pero con una terminacion py.temp. Luego no ejecuta el crawl. El error es el siguiente:

PermissionError: [WinError 5] Acceso denegado: 'tutorial2\\module' -> 'tutorial2\\tutorial2'

Lo probe en WSL con ubuntu y tambien en Win10, pero en ambos me sale un error similar. Parece tema de permisos pero no veo donde mas lo puedo autorizar. Gracias por la ayuda.

Para aquellos que desean saber desde un inicio hasta la craci贸n del resultados.html aqu铆 dejo mis apuntes鈥 espero les sirva.

# steps
# 1. install scrapy
# 2. scrapy version
# 3. scrapy startproject tutorial
# 4. go to spiders folder and create this file

# import scrapy
import scrapy

# create a class
# this class inherits from scrapy.Spider
class QuotesSpider(scrapy.Spider):

   # atributes
   name = 'quotes'

   """
      This name is to execute our scrapy project like this
      -- scrapy crawl quotes --
   """

   # Put all the url directions that we want to go
   start_urls = [
      'https://quotes.toscrape.com/'
   ]

   # methods

   # this method define the principal logic
   def parse(self, response):
      with open('resultados.html', 'w', encoding='utf-8') as f:
         f.write(response.text)

Si a alguien le causa el siguiente error

KeyError: 'Spider not found: QuotesSpider'

El problema es porque al hacer crawl en lugar de poner el nombre de la clase deben poner el nombre de la variable name!
Desconozco porque con el profe eso funcion贸 de igual forma pero bueno, datazo!

Crear proyecto nuevo
Dentro del ambiente virtual ejecutamos:
scrapy startproject [name_project]

Ingresamos a la carpeta del proyecto
cd tutorial

Hacemos lo mismo en el editor. Ingresamos en tutorial y vemos un monto de archivos.

Ingresamos a la carpeta spiders y all铆 creamos nuestro archivo.
Importante que los archivos py terminen con la palabra spider

Ejemplo: quotes_spider.py

que le podria dar en este caso no me funciona

Para que tengan en cuenta

The parser module is deprecated and will be removed in future versions of Python. For the majority of use cases you can leverage the Abstract Syntax Tree (AST) generation and compilation stage, using the ast module.

Hola, tengo este error al ejecutar scrapy crawl quotes

2020-09-15 07:20:25 [scrapy.utils.log] INFO: Scrapy 2.3.0 started (bot: tutorial)
2020-09-15 07:20:25 [scrapy.utils.log] INFO: Versions: lxml 4.5.2.0, libxml2 2.9.5, cssselect 1.1.0, parsel 1.6.0, w3lib 1.22.0, Twisted 20.3.0, Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)], pyOpenSSL 19.1.0 (OpenSSL 1.1.1g  21 Apr 2020), cryptography 3.1, Platform Windows-10-10.0.19041-SP0
2020-09-15 07:20:25 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.selectreactor.SelectReactor
Traceback (most recent call last):
  File "e:\_developer\scrapy\hello_world\venv\lib\site-packages\scrapy\spiderloader.py", line 76, in load
    return self._spiders[spider_name]
KeyError: 'quotes'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\eduve\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\eduve\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "E:\_Developer\Scrapy\hello_world\venv\Scripts\scrapy.exe\__main__.py", line 7, in <module>
  File "e:\_developer\scrapy\hello_world\venv\lib\site-packages\scrapy\cmdline.py", line 145, in execute
    _run_print_help(parser, _run_command, cmd, args, opts)
  File "e:\_developer\scrapy\hello_world\venv\lib\site-packages\scrapy\cmdline.py", line 100, in _run_print_help
    func(*a, **kw)
  File "e:\_developer\scrapy\hello_world\venv\lib\site-packages\scrapy\cmdline.py", line 153, in _run_command
    cmd.run(args, opts)
  File "e:\_developer\scrapy\hello_world\venv\lib\site-packages\scrapy\commands\crawl.py", line 22, in run
    crawl_defer = self.crawler_process.crawl(spname, **opts.spargs)
  File "e:\_developer\scrapy\hello_world\venv\lib\site-packages\scrapy\crawler.py", line 191, in crawl
    crawler = self.create_crawler(crawler_or_spidercls)
  File "e:\_developer\scrapy\hello_world\venv\lib\site-packages\scrapy\crawler.py", line 224, in create_crawler
    return self._create_crawler(crawler_or_spidercls)
  File "e:\_developer\scrapy\hello_world\venv\lib\site-packages\scrapy\crawler.py", line 228, in _create_crawler
    spidercls = self.spider_loader.load(spidercls)
  File "e:\_developer\scrapy\hello_world\venv\lib\site-packages\scrapy\spiderloader.py", line 78, in load
    raise KeyError("Spider not found: {}".format(spider_name))
KeyError: 'Spider not found: quotes'

Excelente, que grandes posibilidades tiene

Que bonito

que genial!!!

Funciona incluso usando anaconda.

Hola a todos! 馃槂
Me esta apareciendo el siguiente error:
(venv) PS C:\Users\Utente\dev\scrapy-code\hello_world\tutorial> scrapy crawl quotes
Fatal error in launcher: Unable to create process using '鈥渃:\users\utente\dev\webscrapping\hello_world\venv\scripts\python.exe鈥 鈥淐:\Users\Utente\dev\scrapy-code\hello_world\venv\Scripts\scrapy.exe鈥 crawl quotes鈥
He intentado a re-inciar los pasos uno por uno y no encuentro como resolver el problema. Si alguien tiene alguna sugerencia se lo agradeciaria.
Saludos y gracias.

Primer clase y quedo enamorado de la forma de explicar del profe. El 铆mpetu que tiene y la forma bonita de explicar todo me parecen contagiosas.

por fin pude instalar scrapy despu茅s de 30 mins

muy interesante esta clase que bueno es Facundo explicando

interesante

scrapy el rastreo es m谩s r谩pido que el de la mecanizaci贸n, ya que utiliza las operaciones asincr贸nicas (en la parte superior de Trenzado).
Scrapy tiene un mejor y m谩s r谩pido de apoyo para el an谩lisis de (x)html en la parte superior de libxml2.
Scrapy es un marco maduro con unicode completo, manejo de redirecciones, gzip respuestas, impar codificaciones, integrado de cach茅 de http, etc.
Una vez que est谩s en Scrapy, usted puede escribir una ara帽a en menos de 5 minutos para que la descarga de im谩genes, crea miniaturas y exportaci贸n de los datos extra铆dos directamente a csv o json.
Pero para sacar ventaja de todas las caracter铆sticas que usted necesita para aprender, al menos: expresiones xpath, enlace extractores de elemento y de los cargadores.