in scrapy: understanding how do items and requests work between callbacks ,eLRuLL的回答非常好。
我想添加项目变换的一部分。首先,我们将明确回调函数只有在该请求的响应被重载之前才起作用。
在scrapy.doc给出的代码中,它不声明page1和url的url和请求。让我们将page1的url设置为“http://www.example.com.html”。
[parse_page1]是
scrapy.Request("http://www.example.com.html",callback=parse_page1)`
[parse_page2]回调的
scrapy.Request("http://www.example.com/some_page.html",callback=parse_page2)
当第1页的响应被下载回调,parse_page1被调用来生成第2页的请求:
item['main_url'] = response.url # send "http://www.example.com.html" to item
request = scrapy.Request("http://www.example.com/some_page.html",
callback=self.parse_page2)
request.meta['item'] = item # store item in request.meta
在下载page2的响应后,调用parse_page2给retru一个项目:
item = response.meta['item']
#response.meta is equal to request.meta,so here item['main_url']
#="http://www.example.com.html".
item['other_url'] = response.url # response.url ="http://www.example.com/some_page.html"
return item #finally,we get the item recording urls of page1 and page2.
item = response.meta['item']
#response.meta is equal to request.meta,so here item['main_url']
#="http://www.example.com.html".
item['other_url'] = response.url # response.url ="http://www.example.com/some_page.html"
return item #finally,we get the item recording urls of page1 and page2.
我已经阅读过这个部分了......但是我很困惑,我已经提到过代码如何流动。 – Parag
查看我的更新。基本上与其他词语相同的东西。 – warvariuc
感谢您的解释...现在它是有道理的时候,我再次读完整的东西 – Parag