关于python:xvfb在ubuntu 11.04中运行错误

xvfb run error in ubuntu 11.04

我的任务是使用python中的headless webkit(pyqt4.qtwebkit)对谷歌搜索结果进行爬行。模块使用pyqt4对结果进行了很好的爬行。我必须在AmazonEC2中执行这个脚本。因此,我必须使用xvfb(EC2中没有x服务器)。

同时,我的模块必须在一个循环中执行。因此,它在一些迭代中工作正常。在一些循环模块运行到"xvfb run:error:xvfb failed to start"之后。

应该如何解决?

这是我的循环:

1
2
3
4
5
6
7
8
9
10
11
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):

1
2
3
4
5
6
7
8
9
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结果。如何避免XVFB循环失败?


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


像这样跑,

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