2017-04-02 2 views
1

프로젝트를 얻으려고 노력하고 있습니다. Scrapy 크롤링의 결과를 기다리고 있습니다. 처음에는 파이썬에 익숙하지 않았지만 나는 빨리 배우며 지금까지 그것을 좋아했습니다. 내 크롤링을 새로 고치는 내 교정 기능은 다음과 같습니다. 내가 구문 분석 인수 해요 동안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 

이 기능은 내 '주요 기능'에서 for 루프에서 호출됩니다 :이 모든 작품

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

을하고 JSON 파일을 업데이트 않는다의 그러나 나머지, 내 어리석게도 예상대로 응용 프로그램이 기다리지 않습니다. 이 앱을 Pi로 옮기고 난 후 가난한 작은 녀석이 곧 새로 고칠 수 없을 때까지는 문제가 없었습니다. 해결 방법에 대한 제안이 있습니까?

내 빠른 더티 대답은 다른 자동화 된 스크립트로 분할하고 내 자동화 된 '주 기능'을 실행하거나 잠자기 타이머를 사용하기 전에 한 시간 정도만 실행한다고 말합니다. 나를 위해 이것을 해결할 수있는 약간의 교수형 과일. 내 커맨드 라인에서 새로 고침 인수를 입력 할 수있는 것 같습니다. 대신 os 사용 subprocess를 사용

답변

2

:

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

덕분에,이 좋습니다. 나는 FYI를 위해 그것을 목록으로 내 주장을 전달해야했다. [ 'scrapy', 'crawl', 'TeamGame ... –

+0

@JordanWayneCrabb 수동으로 목록을 만들 필요가 없도록 내 스크립트를 업데이트했습니다. 이 답변으로 문제가 해결되면 수락을 고려하십시오. –

관련 문제