Escribir la salida de Scrapy Python en un archivo JSON

En este artículo, veremos cómo escribir una salida scrapy en un archivo JSON en Python.

Usando el shell de línea de comando scrapy

Esta es la forma más fácil de guardar datos en JSON usando el siguiente comando:

scrapy crawl <spiderName> -O <fileName>.json

Esto generará un archivo con un nombre de archivo proporcionado que contiene todos los datos extraídos.

Tenga en cuenta que usar -O en la línea de comando sobrescribe cualquier archivo existente con ese nombre, mientras que usar -o agrega el nuevo contenido al archivo existente. Sin embargo, agregar a un archivo JSON hace que el contenido del archivo no sea JSON. Entonces use el siguiente comando para agregar datos a un archivo existente.

scrapy crawl <spiderName> -o <fileName>.jl

Nota: .jl representa el formato de líneas JSON.

Implementación paso a paso:

Paso 1: Crear el proyecto

Ahora, para comenzar un nuevo proyecto en scrapy, use el siguiente comando

scrapy startproject tutorial

Esto creará un directorio con el siguiente contenido:

Vaya al directorio del tutorial que creamos usando el siguiente comando:

cd tutorial

Paso 2: Crear una araña (tutorial/spiders/quotes_spider.py)

Las arañas son los programas que el usuario define y utiliza scrapy para extraer información de los sitios web. Este es el código de nuestro Spider. Cree un archivo llamado quotes_spider.py en el directorio tutorial/spiders de su proyecto:

Python3

import scrapy
  
  
class QuotesSpider(scrapy.Spider):
    
    # name of variable should be 'name' only
    name = "quotes" 
  
    # urls from which will be used to extract information
    # list should be named 'start_urls' only
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
        'http://quotes.toscrape.com/page/2/',
    ]
  
    def parse(self, response):
        
        # handle the response downloaded for each of the
        # requests made should be named 'parse' only
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get(),
                'author': quote.css('small.author::text').get(),
                'tags': quote.css('div.tags a.tag::text').getall(),
            }

Esta es una araña simple para obtener las citas, los nombres de los autores y las etiquetas del sitio web.

Paso 5: Ejecutar el programa

Para ejecutar el programa y guardar los datos garabateados en JSON usando:

scrapy crawl quotes -O quotes.json

Podemos ver que se ha creado un archivo quotes.json en la estructura de nuestro proyecto, este archivo contiene todos los datos extraídos.

Salida JSON:

Estas son solo algunas de las muchas citas del archivo quotes.json extraído por nuestra araña.

Publicación traducida automáticamente

Artículo escrito por hrshit2000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *