Scrapy — вывод не отображается

#python #scrapy #web-crawler

#python #scrapy #веб-сканер

Вопрос:

Всем доброго утра,

У меня проблема при использовании Scrapy. Я хотел бы получить данные, содержащиеся в столбце «commune» таблицы, по этому URL:https://fr.wikipedia.org/wiki/Liste_des_communes_de_Belgique_par_population

Вот мой паук:

 import scrapy
import json

class communes_spider(scrapy.Spider):
    name = "communes"

    def start_requests(self):
        urls = [
            'https://fr.wikipedia.org/wiki/Liste_des_communes_de_Belgique_par_population'
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        yield response.css('table.wikitable td a::text').getall()
  

Я использую терминал для обхода страницы:

 scrapy crawl communes
  

Однако он не выводит данные столбца «commune». Поэтому я не могу сохранить их в файле json. У кого-нибудь есть представление о том, что здесь происходит?

Заранее спасибо!

Ответ №1:

Spider должен вернуть Request, BaseItem, dict или None, но вы возвращаете список

Пожалуйста, измените свой код на этот

 import scrapy
import json

class communes_spider(scrapy.Spider):
    name = "communes"

    def start_requests(self):
        urls = [
            'https://fr.wikipedia.org/wiki/Liste_des_communes_de_Belgique_par_population'
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        yield {'communes':response.css('table.wikitable td a::text').getall()}