程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

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

发布于2019-10-05 21:42     阅读(1164)     评论(0)     点赞(11)     收藏(0)


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

可以在这里找到此代码

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()

在调用构造函数时,它将死于此消息(将其打印到stdout,而不是未捕获的异常)。

: cannot connect to X server 

如何在无头服务器上使用Python(2.7),QT4和Webkit?不需要显示任何内容,因此我可以将任何设置或任何需要调整的时间调整为一周。

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


解决方案


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

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

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

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


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/131467/2ed851a6821cd6929ab6/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

11 0
收藏该文
已收藏

评论内容:(最多支持255个字符)