Python的无头浏览器(需要支持Javascript!)

57

我需要一个无头浏览器,使用起来相对容易(因为我还是Python和编程新手),可以让我导航到一个页面,登录到需要JavaScript的表单中,然后通过搜索符合某些条件的结果、点击复选框并单击下载文件来爬取结果网页。所有这些都需要JavaScript。

我听说无头浏览器就是我想要的 - 要求/首选项是能够从Python运行,并且最好的结果脚本可以编译成py2exe(我正在为其他用户编写此程序)。

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

欢迎任何想法!


抱歉,据我所知这个还不存在(尚未开发)。现在最好的方法是从Python接口运行webdriver。你可以通过这种方式驱动HtmlUnit,但它是用Java编写的,因此你需要结合使用Java和Python。 - Keith
可能相关:https://dev59.com/tmYr5IYBdhLWcg3w7eXb - Danilo Bargen
6个回答

30

1
还有PySide,它与PyQt类似,只不过是在LGPL下而不是GPL下发布的。 - icktoofay
我认为无头(headless)意味着没有实际的浏览器页面,虽然你可以用webkit做到这一点,但我发现使用Python驱动它很有用。唯一的问题是与Javascript进行交互并不是世界上最容易的事情 - 如果我没记错的话,你不能仅仅注入东西就行了。但是,我成功将Python解释器嵌入到一个Qt应用程序中,可以“驱动”webkit界面,所以它肯定有些实力。你也可以看看http://sikuli.org/,以获得更多面向测试的解决方案。 - synthesizerpatel
1
这正是我为正在使用Django开发的项目所做的事情,以便拥有Web界面和跨平台Qt界面。这样我就可以以非常低的成本实现功能平衡。 - theheadofabroom
@synthesizerpatel:WebKit可以在无头模式下运行,您可以通过frame.evaluateJavaScript()注入JavaScript。 - hoju
18
未来的访客可能希望查看Ghost.py(http://jeanphix.me/Ghost.py/),它提供了一个很好的PyQt/PySide封装。 - Michael Mior

11
这个问题的答案是 Spynner

2
Spynner的依赖项Libxslt需要来自VS 2008的vcvarsall.bat,这会创建相当麻烦的问题,可以在此处看到:[链接](https://dev59.com/X3A75IYBdhLWcg3w49YR#5122521)我们需要一种替代方法。 - User
1
看起来 Spynner 目前不支持 python3 - MarSoft
我不确定这是否是目前最好的答案,但在2011年,Python 2非常可行。 - Steven Matthews

9
我正在编写一个Python驱动程序,用于Zombie.js,这是一个“在模拟环境中测试客户端JavaScript代码的轻量级框架”。
目前我因为Node.js中的一个bug而停滞不前(在编写更多测试和代码之前),但欢迎随时关注我的项目进展:

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


1
你们还在维护它吗?我刚刚检查了一下,构建失败了。 - lame_coder

5

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

你可以尝试Zombie.jsPhantomjs。虽然它们不是Python,而是纯粹的Javascript,但真的可以完成工作。


1
相关资源:https://dev59.com/tmYr5IYBdhLWcg3w7eXb - Danilo Bargen

3

我这样做,是为了替换它,因为频繁停止/启动进程会极大地影响性能。一旦您将phantomjs作为服务运行,您将遇到一系列问题,如内存泄漏。 - Ross

1

你可以将HTQL与IRobotSoft网页抓取器结合使用。点击这里查看示例:http://htql.net/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接