【问题标题】:Scrapy Crawl multiple spiders subsequentlyScrapy Crawl 随后抓取多个蜘蛛
【发布时间】:2016-07-29 12:24:45
【问题描述】:

我对scrapy有点陌生,但我被困在了一个点上。我想在蜘蛛关闭时重新启动它。

我在这里尝试实现的是我从数据库中获取 URL,我以一种方式编写视图,每当我发送“scrapy crawl xyz”请求时,start_request 都会得到一个 URL[next URL],即不同于从数据库的上一个请求中传递的内容。

问题是如果数据库中有四个 URL,我需要运行 4 次“scrapy crawl xyz”,但我想避免这种情况,并且我试图在当前的“spider_closed”被调用时触发“scrapy crawl xyz”在蜘蛛的尽头。请帮忙

【问题讨论】:

标签: scrapy web-crawler


【解决方案1】:

如果您想在一个脚本中抓取多个蜘蛛 - 您可能希望从一个脚本运行蜘蛛。见official docummenation on how to do that

要扩展文档中提供的示例,您的示例应类似于:

process.crawl(MySpider)
process.start()
process.crawl(MySpider2)
process.start()
process.crawl(MySpider3)
process.start()

【讨论】:

  • 感谢 Granitosaurus 但我不想运行多个蜘蛛,我在这里尝试的是在完成从第一个 URL 抓取数据后再次运行相同的蜘蛛
  • 在这种情况下,您只需在将 MySpider.start_urls 属性添加到进程之前更新它。顺便说一句,为什么不只是在启动蜘蛛时将多个 url 传递给 start_requests?
  • 同时传递多个 URL 时,我正在从连接对等方和“twisted.python.failure.failure class 'openssl.ssl.error'”中重置,但同时当我抓取这些链接时一次他们被抓取而没有任何错误
  • @vrnair 你如何传递多个 url?
  • 我正在通过rest框架传递url,即它需要json格式的数据并从中获取url.....
【解决方案2】:

大家好,我发现我的问题有问题。我想同时运行相同的scrapy命令。所以我所做的是在 linus 中创建了我自己的命令,然后将我的 scrapy crawl xyz 放入一个循环中并且它起作用了。

!/bin/bash

对于我在seq 1 3 做 爬虫的故事

完成

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多