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‑cp38‑cp38‑win32.whl

La descargas, la pones en la carpeta y la instala con python
pip install Twisted‑20.3.0‑cp38‑cp38‑win32.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 ‘scrapy crawl quotes’. Y listo
espero que les sirva

El programa corre…pero 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 '“c:\users\utente\dev\webscrapping\hello_world\venv\scripts\python.exe” “C:\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.