动态 DEPTH_LIMIT 作为 Scrapy 中的参数,从 Scrapyd 传递
Dynamic DEPTH_LIMIT as parameter in Scrapy, passed from Scrapyd
我目前正在使用Scrapyd启动爬行蜘蛛,DEPTH_LIMIT设置在Scrapy App设置中
我想知道如何在 Scrapyd 中将 depth_limit
作为参数传递,允许我根据用户的要求为每个不同的爬行设置它 "dynamically"。
我相信我只能作用于Scrapy的蜘蛛和管道
编辑
感谢@John Smith 的回复,我发现可以将设置传递给 scrapyd
的 schedule
方法
settings = {
'unique_id': unique_id, # unique ID for database instance
'USER_AGENT': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
'DEPTH_LIMIT': 1
}
# Schedule a new crawling task from scrapyd
task_id = scrapyd.schedule('default', "spider-name", settings=settings, url=url, domain=domain)
除非我误解了你想要指定 DEPTH_LIMIT 的确切时间和地点,否则你可以通过 scrapyd API 调用传递任何 scrapy 设置覆盖:
curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DEPTH_LIMIT=5
http://scrapyd.readthedocs.io/en/stable/api.html#schedule-json
我目前正在使用Scrapyd启动爬行蜘蛛,DEPTH_LIMIT设置在Scrapy App设置中
我想知道如何在 Scrapyd 中将 depth_limit
作为参数传递,允许我根据用户的要求为每个不同的爬行设置它 "dynamically"。
我相信我只能作用于Scrapy的蜘蛛和管道
编辑
感谢@John Smith 的回复,我发现可以将设置传递给 scrapyd
schedule
方法
settings = {
'unique_id': unique_id, # unique ID for database instance
'USER_AGENT': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
'DEPTH_LIMIT': 1
}
# Schedule a new crawling task from scrapyd
task_id = scrapyd.schedule('default', "spider-name", settings=settings, url=url, domain=domain)
除非我误解了你想要指定 DEPTH_LIMIT 的确切时间和地点,否则你可以通过 scrapyd API 调用传递任何 scrapy 设置覆盖:
curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DEPTH_LIMIT=5
http://scrapyd.readthedocs.io/en/stable/api.html#schedule-json