【发布时间】:2010-10-02 19:30:46
【问题描述】:
我有一个带有 js 的页面。 在网页上执行 js 后我需要获取 dom。 Js 在名为 'sdl' 的 div 中插入文本。 我需要在 . js源码中无法解析value,是js生成的。 怎么做? 对不起我的英语不好。
【问题讨论】:
我有一个带有 js 的页面。 在网页上执行 js 后我需要获取 dom。 Js 在名为 'sdl' 的 div 中插入文本。 我需要在 . js源码中无法解析value,是js生成的。 怎么做? 对不起我的英语不好。
【问题讨论】:
DOM 被暴露(至少在 pyqt >= 4.7.4 中)
document = webview.page().currentFrame().documentElement()
document.findAll("a")
...
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwebframe.html
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwebelement.html
【讨论】:
在 Python 中,您可以使用 Ghost,它是开源的,可从 github 获得。它是围绕 PyQt4+WebKit hack 的 Python 包装器,运行良好。你可以这样做
import ghost
g = ghost.Ghost()
g.open('http://stackoverflow.com/')
现在g.content 指的是文档,后渲染。
您还可以使用evaluate 方法评估文档中的JS,它会返回JS 值。
Ghost 也很容易公开 PyQt 对象,因此您可以对 Ghost 未实现的 Ghost 对象执行操作,并且它会通过。
我记不太清了,但我想是这样的
g.main_frame.setContent('<b>Hello World</b>')
可以用来设置文档,而
g.content = '<b>Hello World</b>'
扔一个。这需要一些驯服,但很快就会让它按照你想要的方式工作。
Ghost 文档很烂,但源代码是一个单独的文件,而且解释性很强。我用Ghost,没问题。只是不要创建多个Ghost 对象,否则它往往会导致一切崩溃。
【讨论】: