2011-05-17 35 views
50

我需要一个非常容易使用的无头浏览器(我对Python和一般编程还是比较新的),这将允许我导航到页面,登录到表单需要使用Javascript,然后通过搜索符合特定条件的结果来刮取结果网页,单击复选框并单击以下载文件。所有这些都需要Javascript。Python的无头浏览器(需要JavaScript支持!)

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

到目前为止风车看起来像它可能是我想要的,但我不知道。

任何想法赞赏!

+0

对不起,据我所知,这还不存在(还)。你现在可以做的最好的是运行webdriver,从Python界面驱动。你可以用这种方式驱动HtmlUnit,但是这是用Java编写的,所以你有Java和Python的组合。 – Keith 2011-05-17 03:43:22

+0

可能相关:http://stackoverflow.com/questions/13287490/is-there-a-way-to-use-phantomjs-in-python – 2013-06-10 09:35:35

回答

10

这个问题的答案是Spynner

+2

Spynner的依赖性Libxslt需要VS 2008中的vcvarsall.bat,它创建了一个相当严峻的考验:[link](http://stackoverflow.com/questions/3047542/building-lxml-for-python-2-7-on-windows/5122521#5122521)我们需要一个替代方案。 – User 2014-01-11 20:33:06

+0

看起来像Spynner不支持'python3' ATM – MarSoft 2018-01-24 03:47:40

+0

我不确定这是目前的最佳答案,但在2011年,Python 2非常可行 – 2018-01-24 03:49:12

29

我在Python经由PyQt的/ pyside使用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/

+1

还有[PySide](http://www.pyside.org/) ),除了在LGPL而非GPL之外,它类似于PyQt。 – icktoofay 2011-05-17 04:14:17

+0

我认为无头将意味着没有实际的浏览器页面,虽然你可以用webkit做到这一点 - 我发现它是由Python驱动的有用。唯一的问题是,与Javascript交互不是世界上最简单的事情 - 如果我没有记错的话,你不能只注入东西。但是,我确实设法将嵌入到Qt应用程序中的Python插入程序嵌入到可以“驱动”webkit界面的Qt应用程序中,因此它肯定有一些果汁。您可能还想看看http://sikuli.org/了解更多面向测试的解决方案。 – synthesizerpatel 2011-06-10 05:10:00

+1

这正是我为一个项目所做的工作,我正在使用Django来创建一个Web界面以及一个跨平台的qt界面。这样我就可以以非常低的成本实现功能平价。 – theheadofabroom 2011-06-15 08:13:28

5

有没有太多的无头浏览器,但支持Javascript。

您可以试试Zombie.jsPhantomjs。这些不是Python,而是简单的Javascript和那些真的可以完成这项工作。

+1

相关:http://stackoverflow.com/questions/13287490/is-there-a-way-to-use-phantomjs-in-python – 2013-06-10 09:36:37

9

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

目前我在上一项决议,一个错误的Node.js停顿(之前我写更多的测试和更多的代码),但随时留意我的项目,因为它的进展:

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

+1

你们还在维护它吗?刚刚检查,构建失败。 – 2014-10-31 02:21:48

3

尝试使用phantomjs,它有很棒的javascript支持。然后,你可以运行它作为一个python脚本

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

,可能是老板身边的一个子进程。

+0

我这样做,寻找替代它,因为它是相当密集的停止/开始的过程,极大地影响性能。然后,一旦开始运行phantomjs作为服务,您将遇到一系列问题,如内存泄漏。 – Ross 2016-03-13 22:24:57