我已经实施了一个正在使用Scrapyd API触发废品蜘蛛的Web应用程序(Web App和Scrapyd正在同一服务器上运行(。
我的Web应用程序正在存储DB中的Scrapyd返回的工作ID。我的蜘蛛将物品存储在dB中。
问题是:我如何在DB中链接Scrapyd发行的工作ID和爬网发行的项目?
?我可以使用额外的参数触发蜘蛛 - 假设我的Web应用程序生成的ID - 但我不确定这是最好的解决方案。最后,如果Scrapyd发行它,则无需创建该ID ...
感谢您的帮助
这个问题应该被称为"我如何在运行时获得Scrapyd任务的工作ID?"
当Scrapyd运行蜘蛛时,它实际上会给蜘蛛作为一个论点。应该始终是sys.args
的最后一个参数。
也 os.environ['SCRAPY_JOB']
应该做这个问题。
在蜘蛛构造器中添加行 - >
self.jobId = kwargs.get('_job')
然后在解析功能中通过该项目,
def parse(self, response):
data = {}
......
yield data['_job']
在管道中添加此 - >
def process_item(self, item, spider):
self.jobId = item['jobId']
.......