2012-06-08 140 views
7
  1. 在scrapy中,例如,如果我有兩個包含不同HTML的URL,現在我想爲每個蜘蛛編寫兩個單獨的蜘蛛,並且想要同時運行這兩個蜘蛛。在scrapy中,可以一次運行多個蜘蛛。在scrapy中運行多個蜘蛛

  2. 在scrapy寫多個蜘蛛之後,我們如何能安排他們爲每6小時運行(可能會像cron作業)

我沒有上面的想法,ü可以建議我如何用一個例子來執行上述事情。

在此先感謝。

回答

2

它很可能是最簡單的,只是在一次從操作系統層面運行兩個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小時內整除小時。

+0

非常感謝ür鍵回覆,不介意我問這個,U可以給這樣的例子代碼,以便它會更多的幫助充滿第二我可以把它進一步 –

1

您可以嘗試使用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" 
+0

謝謝,它工作正常。 – VAdaihiep

0

這裏的代碼允許您在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。