es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo almacenar los resultados de un yield en una araña en una variable global?

Sé cómo obtener el resultado de yield y guardarlo en un archivo CSV o JSON, pero ¿cómo lo guardo en una variable global o tal vez en una variable local que puedo pasar como argumento de función? Soy muy nuevo en scrapy.

Aquí está mi código:

““
import scrapy
from scrapy.crawler import CrawlerProcess

global_var = {} # almacenar los resultados de yield en esta variable

class TestSpider(scrapy.Spider):
name = ‘test’
allowed_domains = [‘worldpopulationreview.com’]
start_urls = [‘https://worldpopulationreview.com/countries/countries-by-national-debt/’]

def parse(self, response):
country_data = response.xpath(‘//tbody/tr’)
for data in country_data:
name = data.xpath(‘.//td[1]/a/text()’).get()
debt = data.xpath(‘.//td[2]/text()’).get()
population = data.xpath(‘.//td[3]/text()’).get()
link = data.xpath(‘.//td[1]/a/@href’).get()

    yield {'country_name': name, 'country_debt': debt, 'country_population': population, 'country_url': response.urljoin(link)}

process = CrawlerProcess(
settings={
“FEEDS”: {
“result.json”: {“format”: “json”},
“result.csv”: {“format”: “csv”},
},
}
)

process.crawl(TestSpider)
process.start()

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para guardar los datos de la declaración de rendimiento en una variable global o en una variable local que se pueda pasar como argumento de función, puede definir una variable de lista antes de la función de análisis y agregar los datos a ella dentro del bucle. Aquí hay un ejemplo:

    En el código anterior, definimos el atributo self.results dentro del método __init__ del spider, que inicializará la lista cada vez que se inicie el spider. Dentro del método parse, agregamos un diccionario de datos para cada iteración del bucle a la lista self.results. Luego, pasamos la instancia del spider a la llamada de función process.crawl y la almacenamos en una variable para que podamos acceder al atributo self.results después de que el spider haya terminado de rastrear. Podemos imprimir el atributo self.results o pasarlo como argumento a otra función dentro del mismo script.

Comments are closed.