QtWebkit和javascript

时间:2010-10-02 19:30:47

标签: python qt pyqt4 qtwebkit

我有一个带有js的页面。 我需要在js执行网页后获得dom。 Js在名为'sdl'的div中插入文本。 我需要获得价值。值无法在js源中解析,它由Js生成。 怎么做? 对不起我的英语不好。

2 个答案:

答案 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对象,否则会导致一切崩溃。