我目前正在使用Scrapyd启动爬行蜘蛛,并且在Scrapy应用程序设置中设置了DEPTH_LIMIT设置。

我想知道如何在Scrapyd中将depth_limit作为参数传递,允许我根据用户的要求对每个不同的爬网“动态地”设置它。

我相信我只能对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

关于python - 动态DEPTH_LIMIT作为Scrapy中的参数,从Scrapyd传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51480760/

10-09 18:48