13

私の仕事は、Python でヘッドレス Webkit(PyQt4.QtWebkit) を使用して Google 検索結果をクロールすることです。モジュールは PyQt4 を使用して結果を正常にクロールしていました。Amazon ec2 でこのスクリプトを実行する必要があります。そのため、 Xvfbを使用する必要があります (ec2 には x サーバーはありません)。

同時に、モジュールをループで実行する必要があります。そのため、いくつかの反復で正常に機能していました。いくつかのループ モジュールが実行された後、「xvfb-run: error: Xvfb failed to start」が発生しました。

どのように解決することになっていますか?

これは私のループです:

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

webpage_scrapper は、pyqt4 を使用してすべての html 結果を取得します。ループで xvfb が失敗しないようにするにはどうすればよいですか?

4

2 に答える 2

27

--auto-servernumのパラメータを追加する必要がありますxvfb-runXvfbそれ以外の場合は、同じディスプレイ (デフォルトでは ) でスポーンしようとしますが、:99既に実行している場合は失敗します。

于 2012-01-16T13:32:37.257 に答える
10

このように走って、

xvfb-run --auto-servernum --server-num=1 python webpage_scrapper.py http://google.com
于 2012-02-06T19:37:59.713 に答える