title: Scrapy - How to access a returned dictionary in parse from another parse function
body: <p>I'm trying to use parse as a central hub to gather dicts from other parse functions since I need to use multiple URL and domains but I can't seem to figure out how to get all the data back into one dictionary. Here is an example of what I'm trying to do:</p>
  
  <pre><code>def parse(self, response):
      request_1 = scrapy.Request(domain_1_url, callback = parse_2)
      request_2 = scrapy.Request(domain_2_url, callback = parse_3)
      #unpacks the two dicts from the 2 requests and return them as 1 to the pipeline
      yield {**request_1, **request_2} #what I want to do, doesn't work because they are requests, not dicts
  
  def parse_2(self, response):
      yield {'someKey': 'some value'}
  
  def parse_3(self, response):
      yield {'someOtherKey': 'some more values'}
  </code></pre>
  
  <p>Is there someway I can achieve this? Or is there a better way to do it like throwing everything to the pipeline and have that handle combining the data instead?</p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>I thought about passing an Item object to the other requests thinking that modifying it in the other requests will also modify the one in the main parse because of Python's "call-by-object" properties:</p>
  
  <pre><code>def parse(self, response):
      item = CustomItem()
      request_1 = scrapy.Request(domain_1_url, callback = parse_2)
      request_1.meta['item'] = item
      request_2 = scrapy.Request(domain_2_url, callback = parse_3)
      request_2.meta['item'] = item
      print(item) #still empty
      yield item
  
  def parse_2(self, response):
      item = response.meta['item']
      item['someKey'] = 'some value'
      yield item
  
  def parse_3(self, response):
      item = response.meta['item']
      item['someOtherKey'] = 'some more values'
      yield item
  </code></pre>
  
  <p>Not quite sure why this doesn't work but the item object in parse() is still empty after calling the 2 requests</p>