5

我需要编写一些访问某些网站的脚本。来自命令行的脚本会获取一些页面、发布一些表单、屏幕抓取一些信息等。

它不能真正成为像libwww-perl这样的库“浏览器” ,因为某些步骤可能需要用户交互(验证码、仅Ajax表单、任何交互意外等)。

我能想到的最实用的方法是在 Firefox 中远程打开一个选项卡,然后将 JavaScript 代码注入其中,这有点像GreasemonkeySelenium所做的。它不一定必须用于 Firefox,如果更容易,它可以是不同的浏览器。

那么最好的方法是什么?

4

4 回答 4

3

您是否考虑过Selenium 遥控器?我之前使用该工具自动进行浏览器交互,它运行良好,提供了很大的灵活性

根据您的具体需求,您也许可以利用Selenium IDE,这是一个易于使用的 Firefox 插件,可以轻松编写脚本。

于 2009-04-14T05:16:12.913 回答
2

您可以使用XPCOM以各种可以想象的方式扩展 Firefox。您可以编写某种与另一个进程连接的接口。

于 2009-04-14T05:21:54.147 回答
1

我不确定“最好”的方法是什么,但一种可能性是使用 AppleScript 来完成这项工作。然而,Firefox 没有广泛的脚本功能——如果你愿意使用 Safari,可以使用 AppleScript 命令将 JavaScript 代码注入到文档中(该do JavaScript命令在 Safari 的脚本字典中查找,可从脚本编辑器中获得)。

此外,为了从命令行运行 AppleScripts,请使用osascript

osascript path/to/script.scpt
于 2009-04-14T04:45:25.373 回答
0

要在 OS X 上编写脚本,我推荐两种方法,它们都使用 ruby​​。第一个是Watir,它是一个自动化测试框架,可以控制 Mac os x 上的 firefox 和 safari。

另一种可能更好的屏幕抓取方法是使用hpricot,它是一个非常易于使用的 html 解析器。

在后台,Watir 使用 JSSh - 一个用于 Firefox 的 TCP/IP JavaScript Shell 服务器来执行此操作。JSSH 允许您从远程登录会话控制浏览器。

无论你走哪条路,如果有追捕者,他们都会阻止你。这就是他们的重点:-)

于 2009-06-04T01:39:29.690 回答