From the documentation for the violin:
In some cases, you might be interested in passing arguments to these callback functions so that you can get the arguments later in the second callback. You can use the Request.meta attribute for this.
Here is an example of how to pass an element using this mechanism to fill in different fields from different pages:
def parse_page1(self, response):
item = MyItem()
item['main_url'] = response.url
request = Request("http://www.example.com/some_page.html",
callback=self.parse_page2)
request.meta['item'] = item
return request
def parse_page2(self, response):
item = response.meta['item']
item['other_url'] = response.url
return item
So basically you can clear the first page and save all the information in the element, and then send the whole element with a request to this second level URL and get all the information in one element.