gpt4 book ai didi

python - 如何让 Python、QT 和 Webkit 在 headless (headless)服务器上工作?

转载 作者:太空狗 更新时间:2023-10-29 22:00:51 26 4
gpt4 key购买 nike

我有 Debian Linux 服务器,用于各种用途。我希望它能够完成一些我需要定期完成的网络抓取工作。

这段代码可以是found here .

import sys  
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *

class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv, False) # Line updated based on mata's answer
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()

def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()

一个简单的测试看起来像这样:

url = 'http://example.com'
print Render(url).frame.toHtml()

在调用构造函数时,它会因这条消息而终止(它被打印到标准输出,而不是未捕获的异常)。

: cannot connect to X server 

如何在 headless (headless)服务器上使用 Python (2.7)、QT4 和 Webkit?不需要显示任何内容,因此我可以修改任何设置或任何需要修改的内容。

我研究过替代方案,但这是最适合我和我的项目的。如果我确实必须安装 X 服务器,我该如何以最小的开销完成它?

最佳答案

QApplication 的构造函数之一采用 bool 参数 GUIenabled .
如果你使用它,你可以在没有 X 服务器的情况下实例化 QAppliaction,但你不能创建 QWidgets。

所以在这种情况下,唯一的选择是使用像Xvfb 这样的虚拟X 服务器。呈现 GUI。

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

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

关于python - 如何让 Python、QT 和 Webkit 在 headless (headless)服务器上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13215120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com