2017-08-15 15 views
1

Xpathを使用してScrapyチュートリアルを再現しようとしましたが、ERROR: Spider must return Request, BaseItem or None, got 'dict' in <GET http://quotes.toscrape.com/>の問題を解決する方法がわかりません。 items.pyScrapyエラー:スパイダーがRequest、BaseItemまたはNoneを返す必要があります。 'dict'

from scrapy.item import Item 

class QuotesbotItem(Item): 
    text = scrapy.Field() 
    author = scrapy.Field() 
    tags = scrapy.Field() 

FYI

1)マイクモ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):私はデバッグのためだけで十分なはず二つのファイルからスニペットを共有するつもりです

:これをtutorialと比較して、extract_first()extract()に変更した理由が不思議です他のエラーexceptions.AttributeError: 'SelectorList' object has no attribute 'extract_first'が見えましたが、これは私が信じているこの質問とは無関係です。

+0

を言っていないとあなたは辞書を返していますか? –

答えて

1

エラーはあなたがScrapyのどのバージョンを使用している項目

class QuoteSpider(Spider): 
    name = 'quotes' 
    start_urls = [ 
     'http://quotes.toscrape.com/', 
    ] 

def parse(self, response): 
    for quote in response.xpath('//div[@class="quote"]'): 
     item = QuotesbotItem() 
     item['text'] = quote.xpath('.//span[@class="text"]/text()').extract() 
     item['author'] = quote.xpath('.//small[@class="author"]/text()').extract() 
     item['tags'] = quote.xpath('.//div[@class="tags"]/a[@class="tag"]/text()').extract() 
     yield item 
+1

さて、 'dict'は実際にサポートされている型です。[the code](https://github.com/scrapy/scrapy/blob/eb5d396527c2d63fa6475dfd9b6372a19bce5488/scrapy/core/scraper.py#L184)を参照してください。 –

+0

ええ、私はそれがhttps://github.com/scrapy/scrapy/issues/1064のために使用可能であると思った。 'pip list'は私のバージョンが0.24.4 – Sid

+0

@Sidであることを伝えます。はい、あなたはバージョンをアップグレードすることができます。 –

関連する問題