DOM感知浏览器Python GUI小部件

4
我正在寻找一个Python浏览器小部件(类似于pyQT4的QTextBrowser类或wxpython的HTML模块),它具有与DOM交互的事件。例如,如果我突出显示h1节点,则小部件类应该有一个通知我已经突出显示了某些内容以及该节点具有哪些DOM属性(<h1>,标记的内容,兄弟和父标记等)。理想情况下,小部件模块/类将提供对DOM树对象本身的访问,以便我可以遍历它,修改它并重新呈现新树。

这样的东西存在吗?我尝试过查找,但不幸的是找不到。先感谢您!


看起来XULRunner可能支持我所需的功能。我会调查一下是否可以使用Python脚本化DOM。等我了解更多后会更新这篇文章。 - Karan
3个回答

2
这可能不是您想要的最佳方案,但您可能想查看PyKDE中的Python绑定到KHTML的部分。一个开始查找的地方是KHTMLPart类:

http://api.kde.org/pykde-4.2-api/khtml/KHTMLPart.html

由于这个类的API基于Qt中使用的信号和槽机制,因此您需要在自己的代码中将各种信号连接到槽中,以了解文档的哪些部分已更改。还有一个DOM API,因此也应该可以访问所选文档部分的DOM节点。
更多信息可以在这里找到:

http://api.kde.org/pykde-4.2-api/khtml/index.html


这似乎是目前最好的解决方案,除非对Webkit进行大规模修改。谢谢 :) - Karan
有人提醒我,还有一个包装KHTML的东西可能更容易入手:http://paul.giannaros.org/pykhtml/ - David Boddie

1

我也很想有这样的东西。我怀疑没有带Python绑定的版本存在,但如果我错了,我会非常高兴。

最近我看过一个选项(但从未尝试过),那就是Webkit浏览器。现在它有一些Python绑定,并针对不同的工具包进行构建(我使用GTK)。然而,虽然有可用的C++整个Javascript机器的API,但没有Python绑定,我不明白为什么不能将其绑定到Python上。我知道这是一个相当巨大的任务,但这将是一个普遍有用的项目,所以也许值得投资。


1

如果您不介意受限于Windows操作系统,您可以使用IE浏览器控件。在wxPython中,它位于wx.lib.iewin.IEHtmlWindow(在wxPython演示中有一个演示)。这使您完全可以访问DOM并能够接收事件,例如:

ie.document.body.innerHTML = u"<p>Hello, world</p>"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接