作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有 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/
我是一名优秀的程序员,十分优秀!