在scrapy中,例如,如果我有兩個包含不同HTML的URL,現在我想爲每個蜘蛛編寫兩個單獨的蜘蛛,並且想要同時運行這兩個蜘蛛。在scrapy中,可以一次運行多個蜘蛛。在scrapy中運行多個蜘蛛
在scrapy寫多個蜘蛛之後,我們如何能安排他們爲每6小時運行(可能會像cron作業)
我沒有上面的想法,ü可以建議我如何用一個例子來執行上述事情。
在此先感謝。
在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
第一個*是分鐘,然後是小時等,而一個星號是通配符。所以這說的是在任何時候都可以在6小時或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"
謝謝,它工作正常。 – VAdaihiep
這裏的代碼允許您在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。
非常感謝ür鍵回覆,不介意我問這個,U可以給這樣的例子代碼,以便它會更多的幫助充滿第二我可以把它進一步 –