2017-04-02 39 views
1

試圖獲得一個項目,我正在努力等待Scrapy抓取的結果。對Python來說很新,但我很快學習,至今我都喜歡它。這是我的補救功能來刷新我的抓取;Python/Scrapy等到完成

def refreshCrawls(): 
    os.system('rm JSON/*.json) 

    os.system('scrapy crawl TeamGameResults -o JSON/TeamGameResults.json --nolog') 
    #I do this same call for 4 other crawls also 

這個函數被調用的在我的主要功能'循環,而我解析ARGS:

for i in xrange(1,len(sys.argv)): 
    arg = sys.argv[i] 
    if arg == '-r': 
      pprint('Refreshing Data...') 
      refreshCrawls() 

這一切工作,並沒有更新JSON文件。但是其餘的我應用程序不會等待,因爲我愚蠢地期望它。直到我將應用程序移動到Pi,並且現在這個可憐的小傢伙不能很快刷新,我沒有真正遇到這個問題,關於如何解決這個問題的任何建議?

我的快速骯髒的答案說分裂成一個不同的自動化腳本,並運行一個小時左右之前,我運行我的自動'主要功能',或使用睡眠計時器,但我寧願去這個正確的,如果有一些低懸的水果可以爲我解決這個問題。我確實喜歡能夠在我的命令行中輸入刷新參數。

回答

2

而不是使用os使用subprocess的:

from subprocess import Popen 
import shlex 

def refreshCrawls(): 
    os.system('rm JSON/*.json') 
    cmd = shlex.split('scrapy crawl TeamGameResults -o JSON/TeamGameResults.json --nolog') 
    p = Popen(cmd) 
    #I do this same call for 4 other crawls also 
    p.wait() 

for i in xrange(1,len(sys.argv)): 
    arg = sys.argv[i] 
    if arg == '-r': 
      pprint('Refreshing Data...') 
      refreshCrawls() 
+0

感謝,這是更好的。我必須將我的論點作爲供參考的供參考。 ['scrapy','crawl','TeamGame ... –

+0

@JordanWayneCrabb更新我的腳本,使其不必手動創建列表。如果這個答案解決了這個問題,請考慮接受它。 –