考虑我有3个链接A
,B
,C
:
A
和B
是指向网页的链接,C
是指向需要下载的文件的链接。
我的刮刀是这样做的:
A
的B
B
页的C
C
:下载/保存文件 注1 :我使用3个不同的Rule
来提取A
个链接,B
链接和C
个链接
问题
问题是,我不知道如何将项目(来自页面A
的元数据)与来自链接C
的下载文件相关联。
目前,在Rule
链接的A
的解析回调方法中创建了一个项目,该文件保存在C
链接的回调方法中
项目和/或模型(我使用SQLALchemy在DB中存储,使用管道)需要包含元数据+下载文件的名称。
有没有人知道如何将元数据与下载文件的名称相关联?
Note2 :我使用规则系统,因为它可以使用新规则轻松扩展,规则可以在其他蜘蛛中重复使用。
答案 0 :(得分:2)
我认为这种方法具有近似性:
def parse(self, response):
sel = Selector(response)
if response.url = 'link_to_A':
i = new Item()
i['meta_1'] = sel.xpath('//selector')
i['meta_2'] = sel.xpath('//selector')
link_to_B = sel.xpath('//selector')
yield Request(url=link_to_B, meta={'item': i})
elif response.url = 'link_to_B':
i = response.request.meta['item']
i['link_file'] = sel.xpath('//selector')
return i