簡體   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