首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt QWebKit框架错误?

PyQt QWebKit框架错误?
EN

Stack Overflow用户
提问于 2011-01-22 04:09:33
回答 1查看 1.4K关注 0票数 0

我使用Python、PyQt4和QtWebKit将网页加载到基本的浏览器中来检查数据。

然而,有一个小问题。我正在尝试获取加载页面上每个iframe的内容和src。我用webView.page().mainFrame().childFrames()来获取帧。问题是,childFrames()在浏览器可以看到的情况下只加载帧。例如,当您的浏览器位于页面顶部时,childFrames()将不会加载该页脚的iframes。有没有办法或设置,我可以调整,我可以得到所有的广告?我已经附上了我的“浏览器”的源代码。试着在页面完成加载时向下滚动。观察控制台,您将看到iframes动态加载。请帮帮忙。

代码语言:javascript
复制
from PyQt4 import QtGui, QtCore, QtWebKit
import sys
import unicodedata


class Sp():
    def Main(self):
        self.webView = QtWebKit.QWebView()
        self.webView.load(QtCore.QUrl("http://www.msnbc.msn.com/id/41197838/ns/us_news-environment/"))
        self.webView.show()
        QtCore.QObject.connect(self.webView,QtCore.SIGNAL("loadFinished(bool)"),self.Load)


def Load(self):
    frame = self.webView.page().mainFrame()
    children = frame.childFrames()
    fT = []


    for x in children:
        print "=========================================="
        print unicodedata.normalize('NFKD', unicode(x.url().toString())).encode('ascii','ignore')
        print "=========================================="
        fT.append([unicode(x.url().toString()),unicode(x.toHtml()),[]])


    for x in range(len(fT)):
        f = children[x]
        tl = []
        for fx in f.childFrames():
            print "___________________________________________"
            print unicodedata.normalize('NFKD', unicode(fx.url().toString())).encode('ascii','ignore')
            print "___________________________________________"
            tl.append([unicode(fx.url().toString()),unicode(fx.toHtml()),[]])
        fT[x][2] = tl


app = QtGui.QApplication(sys.argv)
s = Sp()
s.Main()
app.exec_()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-27 23:55:03

不确定为什么要这样做,但如果它只是加载可见的内容,则可以将页面视图大小设置为内容大小,这将加载所有内容:

代码语言:javascript
复制
def Load(self):
    self.webView.page().setViewportSize(
        self.webView.page().mainFrame().contentsSize())

但是,这在GUI中有一个奇怪的效果,因此这个解决方案对于您想要做的事情可能是不可接受的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4766124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档