代码之家  ›  专栏  ›  技术社区  ›  Nicolò Gasparini

动态深度_limit作为scrapy中的参数,从scrapyd传递

  •  1
  • Nicolò Gasparini  · 技术社区  · 7 年前

    我现在用ScrapyD开始爬行蜘蛛和 DEPTH_LIMIT 设置在Scrapy应用程序设置中设置。

    我想知道如何通过 depth_limit 作为scrapyd中的一个参数,允许我根据用户的请求对每个不同的爬行进行“动态”设置。

    我相信我只能对蜘蛛和管道上的碎屑采取行动。

    编辑
    感谢@john smith回复,我发现可以将设置传递给 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)
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   John Smith    7 年前

    除非我误解了您何时何地需要指定深度限制,否则您可以通过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