我想得到一个网站的DOM后js执行。 我还想在网站上获得iframes的所有内容,类似于我在googlechrome的Inspect元素特性。在
这是我的代码:
import sys
from PyQt4 import QtGui, QtCore, QtWebKit
class Sp():
def save(self):
print ("call")
data = self.webView.page().currentFrame().documentElement().toInnerXml()
print(data.encode('utf-8'))
print ('finished')
def main(self):
self.webView = QtWebKit.QWebView()
self.webView.load(QtCore.QUrl("http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_iframe_scrolling"))
QtCore.QObject.connect(self.webView,QtCore.SIGNAL("loadFinished(bool)"),self.save)
app = QtGui.QApplication(sys.argv)
s = Sp()
s.main()
sys.exit(app.exec_())
这给了我网站的html,但不是iframes中的html。有什么方法可以让我得到iframes的HTML吗。在
这是一个很难解决的问题。在
主要的困难是没有办法预先知道每页有多少帧。除此之外,每个子帧可能有自己的帧集,其数目也是未知的。理论上,可能有无限数量的嵌套框架,页面永远无法完成加载(对于有大量广告的网站来说,这似乎并不夸张)。在
总之,下面是脚本的一个版本,它在加载时获取每个帧的顶层QWebFrame对象,并显示如何访问您感兴趣的某些内容。正如你将从输出中看到的,有很多广告插入的“垃圾”帧,这样你就需要过滤掉。在
NB:连接到主框架的
loadFinished
信号,而不是web视图,这一点很重要。如果您连接到后者,如果页面包含多个框架,则将多次调用它。在相关问题 更多 >
编程相关推荐