无X环境下用Python执行JavaScript
我想解析一个网页,但这个网页需要JavaScript才能显示任何内容。为了做到这一点,我使用一个小的Python脚本来获取网页的HTML代码,但之后我还需要在一个DOM环境中执行JavaScript,这听起来挺复杂的。
更麻烦的是,我想在一个没有X11服务器的服务器环境中使用它。
注意:我已经了解过http://code.google.com/p/pywebkitgtk/,但它似乎需要一个X服务器。
5 个回答
我自己也还在琢磨这个问题,所以我的回答可能不太准确,大家要谨慎对待。
到目前为止,我找到了一篇文章,地址是http://blog.motane.lu/2009/06/18/pywebkitgtk-execute-javascript-from-python/,里面讲了Pywebkitgtk的使用方法和一些小问题,作者的需求和我们有点类似。
不过,后来这位博主发现他在用Xvbf的时候,Pywebkitgtk无法正常工作,于是他继续寻找,发现了一个Qt的webkit(如果我理解没错的话,可能是在Qt本身里),文章地址是http://blog.motane.lu/2009/07/07/downloading-a-pages-content-with-python-and-webkit/。显然,这个解决方案比PywebkitGTK要好得多。
当然,我也会关注这里提到的其他解决方案,但我想提一下Qt的这个方案,因为在我看来,它最有可能满足我的需求……如果不行,也许对其他人寻找这个问题的答案会有帮助!:-)
你可以试试使用 Xvfb,它可以创建一个虚拟的显示环境,这样你就不需要运行 X11 了(不过在你的系统上,Xvfb 可能还是需要依赖 X11)。大多数渲染引擎没有无头模式,所以像 Xvfb 这样的工具是运行它们的必要条件。我曾经用这个方法成功地通过 XULRunner 浏览网页,不过不是用 Python。