J'ai essayé de reproduire le tutoriel Scrapy en utilisant Xpath et continuer à courir dans ERROR: Spider must return Request, BaseItem or None, got 'dict' in <GET http://quotes.toscrape.com/>
Je ne sais pas comment résoudre ce problème.Scrapy ERROR: Spider doit retourner Request, BaseItem ou None, a obtenu 'dict'
Je vais partager des extraits de deux fichiers qui doivent être juste assez pour le débogage:
1) Mon araignée quotes_spider.py
from scrapy.spider import Spider
from scrapy import Request
class QuoteSpider(Spider):
name = 'quotes'
start_urls = [
'http://quotes.toscrape.com/',
]
def parse(self, response):
for quote in response.xpath('//div[@class="quote"]'):
yield {
'text': quote.xpath('.//span[@class="text"]/text()').extract(),
'author': quote.xpath('.//small[@class="author"]/text()').extract(),
'tags': quote.xpath('.//div[@class="tags"]/a[@class="tag"]/text()').extract(),
}
2) items.py
from scrapy.item import Item
class QuotesbotItem(Item):
text = scrapy.Field()
author = scrapy.Field()
tags = scrapy.Field()
Pour votre information: Dans le cas où vous comparez cela à la tutorial et se demandent pourquoi j'ai changé le extract_first()
en extract()
, c'est parce que je était en train de voir une autre erreur exceptions.AttributeError: 'SelectorList' object has no attribute 'extract_first'
qui n'est pas liée à cette question je crois.
Quelle version de Scrapy vous utilisez? –