我的任务是使用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循环失败?
您需要为
xvfb-run
添加--auto-servernum
参数。否则,它会尝试在同一个显示器上生成Xvfb
(默认情况下为:99
),如果您已经运行了一个显示器,则会失败。像这样跑
相关问题 更多 >
编程相关推荐