PyQt 将 DOM 保存到文件

0 投票
1 回答
1596 浏览
提问于 2025-04-16 05:57

这段代码为什么不管用呢?我想在这个页面上执行完JavaScript后保存DOM(文档对象模型),而且我想用Qt(一个开发框架)来实现,但不想用图形界面。抱歉我的英语不好。

#coding:utf-8
from PyQt4 import QtCore, QtWebKit


class Sp():
    def save(self):
        print "call"
        data = self.webView.page().currentFrame().documentElement().toInnerXml()
        open("htm","w").write(data)
    def main(self):
        self.webView = QtWebKit.QWebPage()
        self.webView.load(QtCore.QUrl("http://www.google.com"))
        QtCore.QObject.connect(self.webView,QtCore.SIGNAL("loadFinished(bool)"),self.save)
s = Sp()
s.main()

1 个回答

2

在执行其他操作之前,你需要先创建一个 QApplication。

可以添加以下内容:

import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)
s = Sp()
s.main()
sys.exit(app.exec_())

更新:另外,还需要修改代码,因为 QWebPage 没有 load 方法:

import sys
from PyQt4 import QtGui, QtCore, QtWebKit

class Sp():
    def save(self):
        print "call"
        data = self.webView.page().currentFrame().documentElement().toInnerXml()
        open("htm","w").write(data)
        print 'finished'
    def main(self):
        self.webView = QtWebKit.QWebView()
        self.webView.load(QtCore.QUrl("http://www.google.com"))
        QtCore.QObject.connect(self.webView,QtCore.SIGNAL("loadFinished(bool)"),self.save)

app = QtGui.QApplication(sys.argv)
s = Sp()
s.main()
sys.exit(app.exec_())

撰写回答