2012-01-10 6 views
13

내 작업은 파이썬에서 헤드리스 웹킷 (PyQt4.QtWebkit)을 사용하여 Google 검색 결과를 크롤링하고 있습니다. 모듈은 PyQt4를 사용하여 결과를 정밀하게 크롤링하고있었습니다. 아마존 ec2.x에서이 스크립트를 실행해야하므로 Xvfb (ec2에 x 서버 없음)을 사용해야합니다. "오류 : Xvfb가 운영하는 Xvfb가 시작하지 못했습니다"내 모듈은 loop.So에서 실행되어야하는 동시에 xvfb 우분투에서 실행 오류 11.04

은, 그것은 에 일부 루프 모듈이 실행되는 일부 iterations.After을 위해 잘 작동했다

어떻게 해결해야합니까?

for i in range(10): 
    try: 
     query_dict["start"] = i * 10 
     url = base_url + ue(query_dict) 
     flag = True 
     while flag: 
      parsed_dict = main(url) 
      time.sleep(8.4) 
      flag = False 
    except: 
     pass 

주 (URL) :

def main(url): 
    cmd = "xvfb-run python /home/shan/temp/hg_intcen/lib/webpage_scrapper.py"+" "+str(url) 
    print "Cmd EXE:"+ cmd 
    proc = subprocess.Popen(cmd,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE) 
    proc.wait() 
    sys.stdout.flush() 
    result = proc.stdout.readlines() 
    print "crawled: ",result[1] 
    return result 

pyqt4를 사용하여 모든 HTML 결과를 가져옵니다 webpage_scrapper

이 내 루프입니다. xvfb가 루핑에 실패하는 것을 피하는 방법은 무엇입니까?

+0

나는이 위대한 작품을 아마존의 EC2 서버 인스턴스 – Nava

답변

27

xvfb-run--auto-servernum 매개 변수를 추가해야합니다. 그렇지 않으면 동일한 디스플레이 (기본값 : :99)에 Xvfb을 생성하려고 시도합니다. 이미 실행 중이면 실패합니다. 이 같은

10

실행

xvfb-run --auto-servernum --server-num=1 python webpage_scrapper.py http://google.com 
+0

을 사용하고 있습니다. – Jim

+0

나는이 작품이 놀랍다 ... 충돌하는 args를 전달하고있다 :'--auto-servernum'은 자유 디스플레이를 사용자에게 알려주고,'--server-num = 1'은 tell display 1 ....이다. 필요에 따라 하나의 arg 또는 다른 arg를 사용하십시오. –