用于渲染HTML和JavaScript的Python库
有没有什么Python模块可以用来渲染一个包含JavaScript的HTML页面,并且能返回一个DOM对象?
我想解析一个页面,这个页面几乎所有的内容都是通过JavaScript生成的。
2 个回答
1
你可以试试用 python-webkit 来实现这个功能。它需要运行 glib 和 GTK,但这可能比不使用 glib 来处理 webkit 的各个部分要简单一些。
我不确定它是否能满足你所有的需求,不过我觉得你可以试试看。
9
这里最大的难点是要在浏览器外模拟完整的浏览器环境。你可以使用像 Rhino 和 SpiderMonkey 这样的独立 JavaScript 解释器来运行 JavaScript 代码,但它们并不能提供一个完整的浏览器环境来完全渲染网页。
如果我需要解决这样的问题,我会先看看 JavaScript 是如何渲染页面的,可能它是通过 AJAX 获取数据,然后用这些数据来渲染页面。
接着,我可以使用一些 Python 库,比如 simplejson 和 httplib2,直接获取数据并使用这些数据,这样就不需要访问 DOM 对象了。不过,这只是其中一种可能的情况,我不知道你具体要解决的问题是什么。
其他的选择包括 @Łukasz 提到的 selenium,还有一些其他的方式:
- WebKit 嵌入的复杂情况,
- IE win32 脚本的复杂情况,或者,
- 基于 pyxpcom 的解决方案(还有更多复杂情况)。
这些方法的共同缺点是都需要一个几乎完全运行的网页浏览器供 Python 使用,这在某些环境下可能不是一个可行的选择。