ubuntu 11.04中的xvfb运行错误

2024-05-11 08:03:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我的任务是使用python中的headless 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

网页_Crapper将使用pyqt4获取所有html结果。 如何避免xvfb循环失败?


Tags: 模块runcmdurlstdoutprocresultec2
2条回答

您需要为xvfb-run添加--auto-servernum参数。否则,它会尝试在同一个显示器上生成Xvfb(默认情况下为:99),如果您已经运行了一个显示器,则会失败。

像这样跑

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

相关问题 更多 >