没有 GUI 的 JavaScript(和 HTML 渲染)引擎用于自动化?

4 投票
7 回答
7228 浏览
提问于 2025-04-15 22:02

有没有什么库或者框架,可以提供浏览器的功能,但不需要真的在屏幕上显示出来?

我想要自动化网页的导航(比如,Mechanize就能做到这一点),但我希望有完整的浏览器体验,包括支持Javascript。因此,我想要一种虚拟浏览器,可以让我以编程的方式“点击链接”,在里面渲染DOM元素和JS脚本,并且能够操作这些元素。

最好是用Python来实现,不过我也能处理其他语言。

7 个回答

1

看起来 http://watin.sourceforge.net/ 可能是个不错的选择。

如果你不一定要用纯Python的话,可以考虑使用IronPython,因为它是一个C#的项目。

2

现在有很多免费的软件技术可以选择,你可以在 http://wiki.python.org/moin/WebBrowserProgramming 找到相关信息。如果你有具体的问题,可以加入 pyjamas-dev 的 Google 群组,我很乐意在那里提供更多的细节。简单来说,你可以让 pywebkitgtk 以“无头”模式运行,或者通过 python-hulahop 使用 xulrunner,同样可以用 pygtk,而不需要实际调用 "browserwidget.show()",还有 pykhtml 这个选择。此外,你也可以用 python COM 来连接 MSHTML.DLL。

这些方法都算是“作弊”手段:也就是说,利用 Python 和图形网页浏览器引擎的连接,而不真正启动图形界面。如果你真的想要深入编程,可以创建一个不依赖于图形用户界面的 webkit “移植版”。作为一个有经验的 webkit 程序员,我估计要花大约两周的全职时间来制作这样一个“无头”版本的 webkit。

l.

3

PhantomJSPyPhantomJS 是我用来处理这类任务的工具。

简单来说,它们是一个无头浏览器,基于WebKit,可以通过JavaScript完全控制。PhantomJS是用C++写的,而PyPhantomJS是用Python写的。我更喜欢Python版本,因为它有一个插件系统,可以在不修改任何代码的情况下为核心功能添加新功能,这一点比C++版本要好。:)

撰写回答