从Python控制浏览器

问题描述:

我正在寻找一种方法来从Python控制浏览器,即填写表单字段并提交它们,可能调用JS函数。我查了一下,但据我所知,PyWebKitGtk只允许您将浏览器显示为GUI元素,而不是与它接口。从Python控制浏览器

有没有办法轻松做到这一点? 我在Python中编写了我的程序逻辑,而且我讨厌将它移植到JS。 除此之外,即使我使用纯JS的“bookmarklets”,那些将无法读/写我的本地文件系统,他们会吗?

此外,页面上的一些内容是使用AJAX生成的,所以我正在寻找一种解决方案,其中javascript正常运行。

P.S.为了平息你的怀疑,我并没有试图自动填写论坛账户创建表或类似的垃圾邮件,虽然这个任务在技术上是相似的。我需要为我的研究项目抓取/刮取网站。

编辑:IEC看起来很有前途,但我在Mac上工作。

你可以尝试像Selenium,这是脚本的浏览器应用程序通过包括Python在内的各种语言 - 它是用于跨浏览器测试的,但可以做你想做的。

+0

借调。使用Selenium IDE,您可以打开浏览器,按记录,然后自行填写并提交表单。然后,您可以将记录的会话保存到Python代码中。只需将硒代码与您当前的代码集成起来,您就可能是金牌。 – 2010-06-13 21:36:11

+0

这看起来不错。它反过来工作。我会从Selenium调用python,但如果这有效,事情应该没问题。谢谢。编辑:这太棒了!如果那个导出的python脚本能够工作,它会做_exactly_我​​想要的。 – noio 2010-06-13 21:37:38

+0

我没有模拟浏览器,因为我想AJAX运行正常,模拟所有这些调用会有点乏味。 – noio 2010-06-13 21:27:29

您可以实现(在Python)一个WebKit浏览器:

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from PyQt4.QtWebKit import * 
app = QApplication(sys.argv) 
web = QWebView() 
web.load(QUrl("http://google.com")) 
web.show() 
sys.exit(app.exec_()) 

或者选择使用Crowbar会给你一个API接口的xulrunner的(火狐)。