8
  1. 例如,在scrapy 中,如果我有两个包含不同 HTML 的 URL。现在我想为一个单独编写两个蜘蛛,并希望同时运行两个蜘蛛。在 scrapy 中是否可以一次运行多个蜘蛛。

  2. 在编写多个蜘蛛后的scrapy中,我们如何安排它们每6小时运行一次(可能就像cron作业)

我不知道上面,你能建议我如何用一个例子来执行上面的事情。

提前致谢。

4

4 回答 4

3

从操作系统级别一次运行两个scrapy脚本可能是最简单的。他们都应该能够保存到同一个数据库。创建一个shell脚本来调用两个scrapy脚本同时执行它们:

scrapy runspider foo &
scrapy runspider bar

一定要使这个脚本可执行chmod +x script_name

要每 6 小时安排一次 cronjob,crontab -e请在终端中键入,然后按如下方式编辑文件:

* */6 * * * path/to/shell/script_name >> path/to/file.log

第一个 * 是分钟,然后是小时等,星号是通配符。因此,这表示在小时数可被 6 整除的任何时间或每六小时运行一次脚本。

于 2012-06-08T06:36:59.137 回答
3

您可以尝试使用CrawlerProcess

from scrapy.utils.project import get_project_settings
from scrapy.crawler import CrawlerProcess

from myproject.spiders import spider1, spider2

1Spider = spider1.1Spider()
2Spider = spider2.2Spider()
process = CrawlerProcess(get_project_settings())
process.crawl(1Spider)
process.crawl(2Spider)
process.start()

如果您想查看抓取的完整日志,请LOG_FILE在您的settings.py.

LOG_FILE = "logs/mylog.log"
于 2017-03-22T03:14:50.110 回答
2

您应该使用 scrapyd 来处理多个爬虫 http://doc.scrapy.org/en/latest/topics/scrapyd.html

于 2012-11-11T16:43:35.380 回答
1

这里是允许你在 scrapy 中运行多个蜘蛛的代码。将此代码保存在与 scrapy.cfg 相同的目录中(我的 scrapy 版本是 1.3.3,它可以工作):

from scrapy.utils.project import get_project_settings
from scrapy.crawler import CrawlerProcess

setting = get_project_settings()
process = CrawlerProcess(setting)

for spider_name in process.spiders.list():
    print ("Running spider %s" % (spider_name))
    process.crawl(spider_name,query="dvh") #query dvh is custom argument used in your scrapy

process.start()

然后你可以安排这个 python 程序与 cronjob 一起运行。

于 2017-05-11T23:29:19.450 回答