适用于 Python 的无头浏览器(需要 Javascript 支持!)[关闭]

Posted

技术标签:

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

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

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

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

任何想法表示赞赏!

【问题讨论】:

对不起,据我所知这不存在(还)。你现在能做的最好的就是运行 webdriver,从 Python 接口驱动。你可以用这种方式驱动 htmlUnit,但它是用 Java 编写的,所以你有 Java 和 Python 的组合。 可能相关:***.com/questions/13287490/… 【参考方案1】:

我通过 pyqt / pyside 在 Python 中使用 webkit 作为无头浏览器:http://www.riverbankcomputing.co.uk/software/pyqt/downloadhttp://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.js 或Phantomjs。这些不是 Python,而是普通的 Javascript,它们确实可以完成这项工作。

【讨论】:

相关:***.com/questions/13287490/…【参考方案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 非常可行

以上是关于适用于 Python 的无头浏览器(需要 Javascript 支持!)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Chromium 无头页面无响应但适用于 Firefox

爬虫--python3.6+selenium+BeautifulSoup实现动态网页的数据抓取,适用于对抓取频率不高的情况

如何运行无头的selenium脚本,独立于主机和浏览器

CentOS7下python3 selenium3 使用Chrome的无头浏览器 截取网页全屏图片

C# (.NET) 的无头浏览器? [关闭]

selenium操作下拉滚动条的几种方法