我正在寻找一个 python 浏览器小部件(沿着 pyQT4 的QTextBrowser类或wxpython 的 HTML 模块的行),它具有与 DOM 交互的事件。例如,如果我突出显示一个 h1 节点,小部件类应该有一个方法来通知我某些内容被突出显示以及该节点具有哪些 dom 属性(<h1>
标签的内容、兄弟标签和父标签等)。理想情况下,小部件模块/类可以访问 DOM 树对象本身,这样我就可以遍历它、修改它并重新渲染新树。
这样的事情存在吗?我试过寻找,但不幸的是我找不到它。提前致谢!
我正在寻找一个 python 浏览器小部件(沿着 pyQT4 的QTextBrowser类或wxpython 的 HTML 模块的行),它具有与 DOM 交互的事件。例如,如果我突出显示一个 h1 节点,小部件类应该有一个方法来通知我某些内容被突出显示以及该节点具有哪些 dom 属性(<h1>
标签的内容、兄弟标签和父标签等)。理想情况下,小部件模块/类可以访问 DOM 树对象本身,这样我就可以遍历它、修改它并重新渲染新树。
这样的事情存在吗?我试过寻找,但不幸的是我找不到它。提前致谢!
它可能不适合您的目的,但您可能想看看 Python 与 KHTML 的绑定,它是 PyKDE 的一部分。一个开始寻找的地方是 KHTMLPart 类:
http://api.kde.org/pykde-4.2-api/khtml/KHTMLPart.html
由于该类的 API 基于 Qt 中使用的信号和插槽范例,因此您需要在自己的代码中将各种信号连接到插槽,以了解文档的某些部分何时发生更改。还有一个 DOM API,因此也应该可以访问文档选定部分的 DOM 节点。
更多信息可以在这里找到:
我也会喜欢这样的东西。我怀疑不存在具有 Python 绑定的绑定,但我很高兴对此有误。
我最近看过(但从未尝试过)的一个选项是Webkit浏览器。现在这有一些 Python 绑定,并针对不同的工具包构建(我使用 GTK)。但是,对于 C++ 的整个 Javascript 机器,有可用的 API,但没有 Python 绑定,我看不出有任何理由不能为 Python 绑定这些。这是一项相当艰巨的任务,我知道,但这将是一个普遍有用的项目,所以也许值得投资。
如果你不介意被限制在 Windows 下,你可以使用 IE 浏览器控件。来自 wxPython,它位于 wx.lib.iewin.IEHtmlWindow 中(在 wxPython 演示中有一个演示)。这使您可以完全访问 DOM 并能够接收事件,例如
ie.document.body.innerHTML = u"<p>Hello, world</p>"