0

我有一个复杂的屏幕抓取脚本,它使用 Selenium2、Selenium Web 驱动程序和 PHP 绑定脚本,所以最后,我有一个驱动 Selenium 的 PHP 脚本,它反过来获取一个 URL ,解析一些 Javascript,填写表格,等等等等,然后返回最终是我所追求的 HTML。这一切都在我的本地计算机上运行良好(作为开发和概念验证环境)。

所以。

对于生产,我需要这个脚本每天自动运行 3 次。我想弄清楚在我的服务器上设置所有东西对我来说是否更好(意思是:弄清楚如何让 Firefox for Linux 运行,然后是 Java,然后是 Selenium2 等等……对我来说不是微不足道的;该死的吉姆,我是一名程序员,而不是系统管理员!),或者我是否可以使用像Sauce Labs 的 OnDemand这样的第 3 方 Selenium 测试服务,或者任何其他基于云的 Selenium 服务

那些第 3 方解决方案似乎都是为“单元测试”而设置的,这完全不是我正在做的。我不知道那些东西,或者使用 PHPUnit,或者用构建进行测试,或者其他什么。我只想每天运行 3 次简单的 PHP 脚本,并让它与 Selenium 对话以驱动浏览器并进行屏幕抓取。

这些第 3 方解决方案之一对于我想要完成的事情是一个好主意,还是它们是否过度杀伤/离我的(相对简单的)目标太远了?

4

1 回答 1

1

首先,我想让你知道我在 Ruby 中使用 Selenium,所以我假设运行你的 php 脚本将启动 selenium webdriver 并运行你的测试......我将解释如何轻松地每天运行 3 次脚本而不需要成为系统管理员大师。

Linux 有一个非常稳定和强大的命令,称为 cron,这是您需要使用的。它允许您安排每天/每小时/任何时间发生的操作。

您要做的第一件事是使用您的脚本进入目录。我将您的脚本称为 script.php。首先要确保脚本的第一行是:

#!/usr/bin/php

在该目录中,您将执行以下命令以使系统可以访问您的文件:

chmod +x script.php

现在使用以下命令设置您的 cron 作业:

crontab -e

然后投入你的工作:

00 4,12,20 * * * /home/sean/script.php

00 - 表示在 00 分钟。

4,12,20 - 是小时数(它是 24 小时制。)

第一个:* - 每天

第二个:* - 每个月

第三个:* - 一周中的每一天

所以这个脚本会在每天、每周、每月的下午 4 点、中午和晚上 8 点运行。

显然,将目录更改为系统上的脚本,并将时间设置为您希望进行抓取的时间。

我希望这有帮助!

-为 java/firefox 附加的东西-

首先,因为我使用的是 Ruby,所以对这一切持保留态度 :)

好的,要让 java/firefox 运行,您可能想要独立获取 selenium。你可以在这里抓住它。

然后运行 ​​selenium 服务器,您只需:

java -jar selenium-server-standalone-2.5.0.jar

您可以在 cron 作业中运行 put 独立服务器,然后在脚本文件中将其关闭。

于 2011-09-04T04:11:53.230 回答