Está en la página 1de 3

1.

tener instalado scrapy en un entorno virtual


2. vamos a usar el sitio http://quotes.toscrape.com
3. Primero se debe hacer un estudio del sitio, para eso revisar con las herramientas de
desarrollo (en windows con tecla F12) la utilidad del inspector de elementos, para
este caso vamos a identificar las etiquetas: top Ten tags.

4. iniciaremos una sesión con scrapy shell http://quotes.toscrape.com

5. dentro del shell, se puede observar la conexión y los datos relacionados con la
respuesta http. accediendo a la variable request en el shell

6. si se desea ver la lista de las tag se debe observar las clases y etiquetas
seleccionadas. en especial la etiqueta nodo que las contiene.

response.xpath("//div[contains(@class, 'tags-box')]/span[@class='tag-item']/a/text()").getall()

cómo extraer el título

response.xpath("//h1/a/text()").get()

Ahora vamos a pasar nuestra experiencia creando consultas xpath en un proyecto


scrapy, para esto vamos a ocupar los siguientes pasos.

1. crear proyecto scrapy startproject proyectoScrapy


2. Después de crear el proyecto observe que en la carpeta donde se está trabajando
se cree una carpeta con el nombre del proyecto, en este caso proyectoScrapy

3. ingrese a la carpeta del proyecto y luego vamos a ingresar a la carpeta spider, sobre
esta carpeta podemos crear nuestro primer spider con el comando scrapy
genspider nombredominio nombredominio.com

El formato del spider es basado en una clase python como ejemplo se debe hacer
así:

import scrapy

class ExampleSpider(scrapy.Spider):
name = 'ejemplo'
allowed_domains = ['toscrape.com']
start_urls = ['http://quotes.toscrape.com/']

def parse(self, response):


with open('resultado.html','w', encoding='utf-8') as f:
f.write(response.text)

4. Para ejecutar el spyder creado se usa el atributo name, y el comando descrito a


continuación: scrapy crawl ejemplo, esto automáticamente ejecutarìa el spider
ejemplo y por defecto el método parse.

5. Ahora vamos a hacer un ejemplo de extracción de datos sobre la página, para esto
vamos a incluir los xpath previamente elaborados en el método parser como se ve
en el ejemplo de código a continuación. para ejecutar el spider se hace con el
comando scrapy crawl extraccion, extraccion es el nombre del spider
6.
def parse(self, response):
lista= response.xpath("//div[contains(@class, 'tags-
box')]/span[@class='tag-item']/a/text()").getall()
for valor in lista:
print(">>",valor)

7. Finalmente, un ejemplo para almacenar los datos extraídos. en este ejemplo vamos
a generar un archivo json de respuesta el código de ejemplo se presenta a
continuación, para ejecutar el proyecto utilizar el comando scrapy crawl
almacenamiento -o respuesta.json, donde almacenamiento es el nombre del
spider y -o hace referencia a la salida en este caso un archivo respuesta.json.
8.
import scrapy

class ExtraccionSpider(scrapy.Spider):
name = 'extraccion'
allowed_domains = ['toscrape.com']
start_urls = ['http://quotes.toscrape.com/']

def parse(self, response):


titulo=response.xpath("//h1/a/text()").get()
tags= response.xpath("//div[contains(@class, 'tags-box')]/span[@class='tag-
item']/a/text()").getall()

quotes=response.xpath("//div[@class='quote']/span[@class='text']/text()").getall()
autores=response.xpath("//small[@class='author']/text()").getall()
yield{
'title':titulo,
'tags':tags,
'quotes':quotes,
'authors':autores
}

También podría gustarte