【问题标题】:Headless Browser for Python (Javascript support REQUIRED!) [closed]适用于 Python 的无头浏览器(需要 Javascript 支持!)[关闭]
【发布时间】:2011-08-26 20:58:46
【问题描述】:

我需要一个相当容易使用的无头浏览器(我对 Python 和一般编程还很陌生),它允许我导航到一个页面,登录到一个需要 Javascript 的表单,然后抓取结果通过搜索符合特定条件的结果、单击复选框并单击下载文件来访问网页。所有这些都需要 Javascript。

我听说我想要一个无头浏览器 - 要求/偏好是我能够从 Python 运行它,并且最好是生成的脚本可以由 py2exe 编译(我正在为其他用户编写这个程序)。

到目前为止,Windmill 看起来可能是我想要的,但我不确定。

任何想法表示赞赏!

【问题讨论】:

  • 对不起,据我所知这不存在(还)。你现在能做的最好的就是运行 webdriver,从 Python 接口驱动。你可以用这种方式驱动 HtmlUnit,但它是用 Java 编写的,所以你有 Java 和 Python 的组合。

标签: javascript python screen-scraping headless-browser


【解决方案1】:

我通过 pyqt / pyside 在 Python 中使用 webkit 作为无头浏览器:
http://www.riverbankcomputing.co.uk/software/pyqt/download
http://developer.qt.nokia.com/wiki/Category:LanguageBindings::PySide::Downloads

我特别喜欢 webkit,因为它易于设置。对于 Ubuntu,您只需使用:sudo apt-get install python-qt4

这是一个示例脚本:
http://webscraping.com/blog/Scraping-JavaScript-webpages-with-webkit/

【讨论】:

  • 还有PySide,与PyQt类似,只是在LGPL而不是GPL下。
  • 我认为 headless 意味着没有实际的浏览器页面,虽然您可以使用 webkit 做到这一点 - 我发现它由 Python 驱动很有用。唯一的问题是与 Javascript 交互并不是世界上最简单的事情——如果我没记错的话,你不能只注入东西。但是,我确实设法将 Python 解释器嵌入到可以“驱动”webkit 界面的 Qt 应用程序中,所以它肯定有一些汁液。您可能还想查看sikuli.org,了解更多面向测试的解决方案。
  • 这正是我为一个项目所做的,我正在使用 Django 来拥有一个 Web 界面以及一个跨平台的 qt 界面。这样我就可以以非常低的成本获得功能对等。
  • @synthesizerpatel:webkit 可以无头运行,您可以通过 frame.evaluateJavaScript() 注入 javascript
  • 任何未来的访问者都可能希望查看Ghost.py,它为 PyQt/PySide 提供了一个很好的包装。
【解决方案2】:

您可以将 HTQL 与 IRobotSoft webscraper 结合使用。在此处查看示例:http://htql.net/

【讨论】:

    【解决方案3】:

    目前还没有太多支持 Javascript 的无头浏览器。

    你可以试试Zombie.jsPhantomjs。这些不是 Python,而是普通的 Javascript,它们确实可以完成这项工作。

    【讨论】:

    【解决方案4】:

    我正在为 Zombie.js 编写 Python 驱动程序,“一个用于在模拟环境中测试客户端 JavaScript 代码的轻量级框架”。

    我目前在解决 Node.js 中的错误(在我编写更多测试和更多代码之前)处于停滞状态,但请随时关注我的项目进展:

    https://github.com/ryanpetrello/python-zombie

    【讨论】:

    • 你们还在维护吗?刚刚检查,构建失败。
    【解决方案5】:

    尝试使用 phantomjs,它有很好的 javascript 支持。然后你可以将它作为 python 脚本的子进程运行

    http://docs.python.org/library/subprocess.html

    这可以控制它。

    【讨论】:

    • 我这样做,希望替换它,因为停止/启动进程非常密集,这会极大地影响性能。然后,一旦您开始将 phantomjs 作为服务运行,您将遇到一系列问题,例如内存泄漏。
    【解决方案6】:

    这个问题的答案是Spynner

    【讨论】:

    • Spynner 的依赖项 Libxslt 需要来自 VS 2008 的 vcvarsall.bat,这造成了相当大的考验:link 我们需要一个替代方案。
    • 看起来 Spynner 不支持python3 ATM
    • 我不确定这是否是目前最好的答案,但在 2011 年 Python 2 非常可行
    猜你喜欢
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 2012-09-28
    • 2012-07-23
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多