繁体   English   中英

在scrapy中运行多个蜘蛛

[英]Running Multiple spiders in scrapy

  1. 例如,如果我有两个包含不同HTML的URL,则在scrapy中。 现在我想为一个人编写两个单独的蜘蛛,并且想要同时运行两个蜘蛛。 在scrapy中,可以同时运行多个蜘蛛。

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

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

提前致谢。

从操作系统级别一次运行两个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

第一个*是分钟,然后是小时等,而asterik是通配符。 因此,这表示在任何时间可以将小时整除6或每六小时运行一次。

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

您可以尝试使用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()

如果要查看爬网的完整日志,请在settings.py设置LOG_FILE

LOG_FILE = "logs/mylog.log"

这里的代码允许您在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一起运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM