Framework Scrapy - Scrapyd服务器。
我在蜘蛛中获取jobid值有一些问题。
将数据发布到http://localhost:6800/schedule.json后,响应为
status = ok
jobid = bc2096406b3011e1a2d0005056c00008
但我需要在此过程中在当前蜘蛛中使用此jobid。它可以用于open {jobid} .log文件或其他动态原因。
class SomeSpider(BaseSpider):
name = "some"
start_urls = ["http://www.example.com/"]
def parse(self, response):
items = []
for val in values:
item = SomeItem()
item['jobid'] = self.jobid # ???!
items.append(item)
return items
但是只有在完成任务后我才会看到这个工作:(谢谢!
答案 0 :(得分:5)
我想有一种更简单的方法,但您可以从命令行参数中提取作业ID。 IIRC,scrapyd发布一只蜘蛛,给它一个参数。只需探索您需要jobid的sys.args
。
答案 1 :(得分:5)
您可以从SCRAPY_JOB
环境变量
os.environ['SCRAPY_JOB']
答案 2 :(得分:0)
截至2020年11月(以及更早的时间),
os.environ['SHUB_JOBKEY']
答案 3 :(得分:0)
在spider.py中 -->
class SomeSpider(BaseSpider):
name = "some"
start_urls = ["http://www.example.com/"]
def __init__(self, *args, **kwargs):
super(SomeSpider, self).__init__(*args, **kwargs)
self.jobid = kwargs.get('_job')
def parse(self, response):
items = []
for val in values:
item = SomeItem()
item['jobid'] = self.jobid # ???!
items.append(item)
return items