#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()}