我有一个带有js的页面。 我需要在js执行网页后获得dom。 Js在名为'sdl'的div中插入文本。 我需要获得价值。值无法在js源中解析,它由Js生成。 怎么做? 对不起我的英语不好。
答案 0 :(得分:1)
暴露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
答案 1 :(得分:0)
在Python中,您可以使用Ghost,它是开源的,可从github获得。它是围绕PyQt4 + WebKit hack的Python包装器,效果非常好。你可以做到
import ghost
g = ghost.Ghost()
g.open('http://stackoverflow.com/')
现在g.content
指的是文档,后渲染。
您还可以使用evaluate
方法在doc中评估JS,它将返回JS值。
Ghost也很容易暴露PyQt对象,所以你可以对Ghost没有实现的Ghost
对象做一些事情,并且它会通过。
我记不起来了,但我觉得像是
g.main_frame.setContent('<b>Hello World</b>')
可用于设置文档,而
g.content = '<b>Hello World</b>'
抛出一个。它需要一些驯服,但不需要很长时间就可以按照你想要的方式工作。
Ghost文档很糟糕,但源代码是单个文件并且很有说服力。我使用Ghost,它很好。只是不要创建多个Ghost
对象,否则会导致一切崩溃。