2012-01-10 7 views
13

私のタスクは、pythonでヘッドレスWebkit(PyQt4.QtWebkit)を使用してGoogle検索結果をクロールしています。 モジュールはPyQt4を使用して結果を正常にクロールしていました。amazon ec2.Soでこのスクリプトを実行する必要があります。Xvfb(ec2のxサーバーなし)を使用する必要があります。xvfb ubuntu 11.04でエラーが発生しました

同時に私のモジュールはloop.Soで実行する必要があり、それはいくつかのループモジュールがに実行されるいくつかのiterations.Afterの罰金働いていた「XVFB・ラン:エラー:Xvfbの起動に失敗しました」

どのように解決するはずですか?

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

私は、これは素晴らしい作品のAmazon 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

私はこの作品が驚いています...あなたは競合する引数を渡しています: '--auto-servernum'は自由な表示をユーザに伝え、' --server-num = 1'はuse display 1 ....です必要に応じて、1つのargまたは他のargを使用します。 –

関連する問題