PyQt QWebKit框架错误?

问题描述:

我正在使用Python,PyQt4和QtWebKit将网页加载到裸机浏览器中以检查数据。PyQt QWebKit框架错误?

但是,有一个小问题。我试图获取加载页面上每个iframe的内容和src。我正在使用webView.page().mainFrame()。childFrames()来获取帧。要解决问题的是,childFrame()只有在浏览器可见时才加载框架仅限于。例如,当您的浏览器位于页面顶部时,childFrame()将不会加载iframe位于页面的页脚处。有什么方法或设置可以调整我可以在哪里获得所有广告?我附上了我的“浏览器”的来源。尝试向下滚动时页面完成加载。观看控制台,你会看到iframes动态加载。请帮忙。

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_() 
+0

目的是什么?为什么不能通过解析HTML来完成,而不是要求WebKit的结构? – Apalala 2011-01-22 17:26:24

+0

QWebKit能够解析JavaScript。普通的HTML解析将**不会**做到这一点。 – enderskill 2011-08-22 02:50:24

不知道你为什么这样做,你在做什么,但如果它仅加载什么是可见的,你可以在页面视口的大小设置为内容的大小,并且应该载入一切:

def Load(self): 
    self.webView.page().setViewportSize(
     self.webView.page().mainFrame().contentsSize()) 

但是,这在GUI中有一个奇怪的效果,所以这个解决方案可能对你正在尝试做的事情是不可接受的。