Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Python、QT和Webkit在无头服务器上工作?_Python_Qt_Webkit_Headless_Headless Browser - Fatal编程技术网

如何使Python、QT和Webkit在无头服务器上工作?

如何使Python、QT和Webkit在无头服务器上工作?,python,qt,webkit,headless,headless-browser,Python,Qt,Webkit,Headless,Headless Browser,我有一台DebianLinux服务器,可以用于各种用途。我希望它能够做一些我需要定期做的网页清理工作 此代码可以是 简单的测试如下所示: url = 'http://example.com' print Render(url).frame.toHtml() 在调用构造函数时,它将随此消息一起消失(它被打印到stdout,而不是未捕获的异常) 如何在无头服务器上使用Python(2.7)、QT4和Webkit?没有任何东西需要显示,所以我可以查看任何设置或任何需要查看的内容 我已经考虑过其他选择

我有一台DebianLinux服务器,可以用于各种用途。我希望它能够做一些我需要定期做的网页清理工作

此代码可以是

简单的测试如下所示:

url = 'http://example.com'
print Render(url).frame.toHtml()
在调用构造函数时,它将随此消息一起消失(它被打印到stdout,而不是未捕获的异常)

如何在无头服务器上使用Python(2.7)、QT4和Webkit?没有任何东西需要显示,所以我可以查看任何设置或任何需要查看的内容


我已经考虑过其他选择,但这最适合我和我的项目。如果我必须安装一台X服务器,我怎么能以最小的开销完成呢?

QApplication的一个构造函数采用布尔参数
如果您使用它,您可以在没有X服务器的情况下实例化Qapplication,但是您不能创建QWidgets

因此,在这种情况下,唯一的选择是使用虚拟X服务器来呈现GUI

可以使用这些命令安装和运行Xvfb(假设您已经安装了apt)。原始问题中的代码位于名为
render.py
的文件中

sudo apt-get install xvfb
xvfb-run python render.py

如果你想做的只是获取网页,你可以使用

import urllib
urllib.urlopen('http://example.com').read()
是一个基于webkit的解决方案。也没有头。试试看


如果您喜欢自己使用webkit,您也可以尝试pyslide版本的qt。

如果PyQt5是一个选项,qt 5具有“最小”平台插件


要使用它,请修改传递给QApplication的argv,使其在gitlab CI/CD上包含
['-platform',“minimal']

。添加
['-platform',minimal']
和使用xvfb对我来说不起作用。相反,我使用
QT\u QPA\u平台:“屏幕外”
变量


请参见

您能否避免包含QtGui?它给了我“QWidget:在没有使用GUI时无法创建QWidget”。你知道怎么修吗?为了以防万一,我将检查Xvfb。对不起,我没有真正检查它,而且我似乎还记得,您不能在headless模式下显示小部件,而是实例化它们。因此,如果您需要使用Qt,就必须使用Xvfb。Xvfb工作得很好!我担心我必须安装所有X11,并让服务器运行。谢谢我用对我有用的东西更新了你的答案。@mata你在哪里读到QApplication的构造函数接受参数GUIenabled?我找不到任何关于这个的信息。@GreySage-我已经更新了链接。请注意,这仅对PyQt4有效,在PyQt5上该参数不再受支持,可能是因为它一开始就没有多大意义。最好改用QCoreApplication。很好的一般回答,但我喜欢JavaScript。谢谢,是的。HTML、CSS、JavaScript、图像等。这与使用Chrome或Safari访问网站完全一样(它们都使用WebKit)。似乎我可能误解了您的意图。你想实际显示网页吗?你的例子让我相信你只想要HTML。Python WebKit允许你在页面上进行查询(CSS2如选择器)、执行JavaScript等。你可以用HTML和BeuatifulSoup做我想做的事情,但我喜欢完整性。BeautifulSoup的主要限制是它忽略了JavaScript,这就是为什么OP被引入webkit的原因,就像我一样,我确信。这对我很有效,似乎是目前的解决方案。在过去的几年里,我使用了
xvfb
,现在不再使用了,但是按照这里的描述设置平台目标就可以了。
sudo apt-get install xvfb
xvfb-run python render.py
import urllib
urllib.urlopen('http://example.com').read()