[英]Running Multiple spiders in scrapy
例如,如果我有兩個包含不同HTML的URL,則在scrapy中。 現在我想為一個人編寫兩個單獨的蜘蛛,並且想要同時運行兩個蜘蛛。 在scrapy中,可以同時運行多個蜘蛛。
在編寫多個蜘蛛后的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.