title: Scrapy - TypeError: 'Request' object is not iterable
body: <p>I'm trying to iterate through a list of URL's return from the callback passed to scrapy request, but I'm getting the following error:</p>
  
  <pre><code>TypeError: 'Request' object is not iterable
  </code></pre>
  
  <p>The following works. I can see all the extracted URL's flood the terminal:</p>
  
  <pre><code>import scrapy
  
  class PLSpider(scrapy.Spider):
      name = 'pl'
      start_urls = [ 'https://example.com' ]
  
      def genres(self, resp):
          for genre in resp.css('div.sub-menus a'):
              yield {
                  'genre': genre.css('::text').extract_first(),
                  'url': genre.css('::attr(href)').extract_first() 
              }
  
      def extractSamplePackURLs(self, resp):
          return {
              'packs': resp.css('h4.product-title a::attr(href)').extract()
          }
  
      def extractPackData(self, resp):
          return {
              'title': resp.css('h1.product-title::text'),
              'description': resp.css('div.single-product-description p').extract_first()
          }
  
      def parse(self, resp):
          for genre in self.genres(resp):
              samplePacks = scrapy.Request(genre['url'], callback=self.extractSamplePackURLs)
              yield samplePacks
  </code></pre>
  
  <p>But if I replace the <code>yield samplePacks</code> line with:</p>
  
  <pre><code>    def parse(self, resp):
          for genre in self.genres(resp):
              samplePacks = scrapy.Request(genre['url'], callback=self.extractSamplePackURLs)
              for pack in samplePacks:
                  yield pack
  </code></pre>
  
  <p>... I get the error I posted above.</p>
  
  <p>Why is this and how can I loop through the returned value of the callback?</p>