title: Scrapy ERROR: Spider must return Request, BaseItem or None, got 'dict'
body: <p>I have tried reproducing the Scrapy tutorial using Xpath and keep running into <code>ERROR: Spider must return Request, BaseItem or None, got 'dict' in &lt;GET http://quotes.toscrape.com/&gt;</code> Not sure how to fix this. </p>
  
  <p>I'm going to share snippets from two files which should be just enough for debugging:</p>
  
  <p>1) My spider <code>quotes_spider.py</code></p>
  
  <pre><code>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(),
              }
  </code></pre>
  
  <p>2) <code>items.py</code></p>
  
  <pre><code>from scrapy.item import Item
  
  class QuotesbotItem(Item):
      text = scrapy.Field()
      author = scrapy.Field()
      tags = scrapy.Field()
  </code></pre>
  
  <p>FYI: In case you compare this to the <a href="https://doc.scrapy.org/en/latest/intro/tutorial.html" rel="nofollow noreferrer">tutorial</a> and are wondering why I switched the <code>extract_first()</code> to <code>extract()</code>, it's because I was seeing another error <code>exceptions.AttributeError: 'SelectorList' object has no attribute 'extract_first'</code> which is unrelated to this question I believe. </p>