【发布时间】:2012-01-18 01:21:18
【问题描述】:
需要scrapy中的示例,了解如何从一个页面获取链接,然后点击此链接,从链接页面获取更多信息,并与第一页的一些数据合并。
【问题讨论】:
标签: python web-scraping scrapy
需要scrapy中的示例,了解如何从一个页面获取链接,然后点击此链接,从链接页面获取更多信息,并与第一页的一些数据合并。
【问题讨论】:
标签: python web-scraping scrapy
在首页部分填写您的项目,然后将其放入您请求的元数据中。当调用下一页的回调时,它可以将部分填充的请求,放入更多的数据,然后返回。
【讨论】:
FormRequest(links[i],method='GET',callback=self.parseVideo, meta={'item':item}) 为什么需要没有 formdata 参数的 FormRequest?为什么不是一个简单的请求?
有关传递meta 数据和请求对象的更多信息在这部分文档中进行了具体描述:
【讨论】:
来自scrapy documntation的例子
def parse_page1(self, response):
item = MyItem()
item['main_url'] = response.url
request = scrapy.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
【讨论】:
Scrapy 文档代码的一点图解
def start_requests(self):
yield scrapy.Request("http://www.example.com/main_page.html",callback=parse_page1)
def parse_page1(self, response):
item = MyItem()
item['main_url'] = response.url ##extracts http://www.example.com/main_page.html
request = scrapy.Request("http://www.example.com/some_page.html",callback=self.parse_page2)
request.meta['my_meta_item'] = item ## passing item in the meta dictionary
##alternatively you can follow as below
##request = scrapy.Request("http://www.example.com/some_page.html",meta={'my_meta_item':item},callback=self.parse_page2)
return request
def parse_page2(self, response):
item = response.meta['my_meta_item']
item['other_url'] = response.url ##extracts http://www.example.com/some_page.html
return item
【讨论】: