我正在尝试创建一个请求,并且之前一直在我的蜘蛛类中传递一个函数作为回调。但是,我已经将该函数移到了 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}>
所以它至少像我希望的那样构建请求。
[编辑] 过失,回调没有被调用,因为开始页面没有被抓取(我不得不覆盖parse_start_url()
。但事实证明我做错了,我问的太好了!