xvfb在ubuntu 11.04中运行错误

Nav*_*ava 13 python amazon-ec2 pyqt4 xvfb

我的任务是使用python中的无头webkit(PyQt4.QtWebkit)抓取谷歌搜索结果.该模块正在使用PyQt4抓取结果.我应该在amazon ec2中执行此脚本.所以,我应该使用Xvfb(在ec2中没有x服务器).

同时我的模块必须在循环中执行.所以,它适用于一些迭代.在一些循环模块运行到"xvfb-run:错误: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
Run Code Online (Sandbox Code Playgroud)

main(网址):

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
Run Code Online (Sandbox Code Playgroud)

webpage_scrapper将使用pyqt4获取所有html结果.如何避免xvfb无法循环?

var*_*tec 27

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


sar*_*nan 10

像这样跑,

xvfb-run --auto-servernum --server-num=1 python webpage_scrapper.py http://google.com
Run Code Online (Sandbox Code Playgroud)