【发布时间】:2014-12-23 00:54:15
【问题描述】:
我正在尝试创建一个请求,并且之前在我的蜘蛛类中传递了一个函数作为回调。但是,我已经将该函数移到了 Item 子类,因为我想要不同类型的 Items 并且每种项目的回调可能不同(例如,目前我将提出 DropItem 如果内容类型与预期不符,并且每种类型的项目都有一组不同的有效 MIME 类型)。所以,我想知道的是我可以从我的 Item 子类中传递一个函数作为回调参数吗?基本上是这样的:
item = MyCustomItem() # Extends scrapy.item.Item
# bunch of code here...
req = Request(urlparse.urljoin(response.url, url), method="HEAD", callback=item.parse_resource_metadata)
目前item.parse_resource_metadata 没有被调用。打印req.callback 给出
<bound method ZipResource.parse_resource_metadata of {(correct data for this Item object}>
所以它至少像我希望的那样构造请求。
[edit] 过失,回调没有被调用,因为起始页没有被抓取(我不得不覆盖parse_start_url()。但结果我做错了,我问的太好了!
【问题讨论】:
标签: python callback web-scraping scrapy scrapy-spider