【问题标题】:Programmatic Python Browser with JavaScript带有 JavaScript 的程序化 Python 浏览器
【发布时间】:2010-12-27 08:47:14
【问题描述】:

我想截取一个使用 JavaScript 的网站。

mechanize,用于 Python 的程序化网络浏览器。但是,它(可以理解)不解释 javascript。是否有任何适用于 Python 的编程浏览器?如果没有,我可以使用 Python 中的任何 JavaScript 实现来尝试创建一个吗?

【问题讨论】:

    标签: javascript python browser screen-scraping mechanize


    【解决方案1】:

    我最喜欢的是PyPhantomJS。它是使用 Python 和 PyQt4 编写的。它完全无头,您可以完全通过 JavaScript 控制它。

    但是,如果您希望实际查看该页面,您也可以使用 PyQt4 中的QWebView

    【讨论】:

    • 这真是太棒了。谢谢。
    • 不幸的是,项目维护者无法再维护项目了。但它仍将与 1.4.0 版本兼容。您可以切换到PhantomJS,而不会失去功能性(除了 PyPhantomJS 相比具有的所有令人敬畏的新功能,例如插件支持......)。他们正在寻找其他人来接管维护(核心开发),所以希望它不会消失。 :)
    【解决方案2】:

    还有 spynner“基于 QtWebkit 框架的具有 Javascript/AJAX 支持的 Python 有状态的编程 Web 浏览器模块”:http://code.google.com/p/spynner/

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        我建议您查看http://wiki.python.org/moin/WebBrowserProgramming 上提供给您的一些选项 - 令人惊讶的是,这是一个常见问题(我今天在 stackoverflow 上找到了三个,通过搜索“python 浏览器” “在谷歌上)。如果你这样做,你会发现我给出的其他答案。

        【讨论】:

          【解决方案5】:

          PyV8 包很好地包装了 Python 的 Google's V8 Javascript engine。这特别好,因为您不仅可以从 Python 调用到 Javascript 代码,而且可以从 Javascript 回调到 Python 代码。这使得实现通常的浏览器提供的对象(即 Javascript 全局命名空间中的所有对象:“window”、“document”等)变得非常简单,如果您要制作这些对象,则需要这样做一个支持 Javascript 的 Python 浏览器模拟器,可能通过 mechanize 连接起来。

          【讨论】:

            【解决方案6】:

            您还可以尝试在相关页面上定义Chickenfoot 页面触发器,在页面上执行您想要的任何操作并将操作结果保存到本地文件,并从程序内的命令行调用 Firefox,然后读取文件。

            【讨论】:

              【解决方案7】:

              您最好使用Selenium 之类的工具通过网络浏览器自动进行抓取,这样 JS 就会像真实用户一样执行和呈现页面。

              【讨论】:

                猜你喜欢
                • 2013-02-17
                • 1970-01-01
                • 1970-01-01
                • 2023-03-31
                • 1970-01-01
                • 2014-07-26
                • 1970-01-01
                • 2019-02-04
                • 1970-01-01
                相关资源
                最近更新 更多