0

我想为登录站点的 Cygwin/Bash 创建一个命令行脚本,导航到特定页面并将其与上次运行的结果进行比较。到目前为止,我已经像这样与 Lynx 合作了:

----snpipped, just setting variables----
echo "# Command logfile created by Lynx 2.8.5rel.5 (29 Oct 2005)
----snipped the recorded keystrokes-------
key Right Arrow
key p
key Right Arrow
key ^U" >> $tmp1 #p, right arrow initiate the page saving

#"type" the filename inside the "where to save" dialog
for i in $(seq 0 $((${#tmp2} - 1)))
do
    echo "key ${tmp2:$i:1}" >> $tmp1
done

#hit enter and quit
echo "key ^J
key y
key q
key y
" >> $tmp1

lynx -accept_all_cookies -cmd_script=$tmp1 https://thewebpage.com/login

diff $tmp2 $oldComp
mv $tmp2 $oldComp

它绝对感觉不“正确”: cmd_script 由相对用户操作组成,而不是指定确切的链接名称和操作。因此,如果网站上的任何内容发生更改、切换位置或添加新链接 - 我将不得不重新创建操作。

此外,我无法检查任何错误,因此如果出现问题(登录失败等),我无法中止脚本

我一直在寻找的另一种选择是使用 Ruby 进行机械化(作为说明——我对 Ruby 的经验为 0)。

改进或重写它的最佳方法是什么?

4

2 回答 2

0

wget在这里有用吗?

它是一个 http、https 和 ftd 下载命令行实用程序。它是自由软件 (GNU)。它有许多选项,例如身份验证和时间戳(仅在文件自上次更改后才下载文件)。

http://www.gnu.org/software/wget/

于 2010-05-20T15:47:07.580 回答
0

我认为 lynx 是用于简单 Web 自动化任务的出色工具,但它当然有其局限性。如果您需要错误检查,您应该使用 Perl、Python 或 Ruby 的机械化模块之一(如果您不了解这些语言中的任何一种,Python 可能是最容易学习的语言)。

为了使您的 lynx 脚本更加健壮,您可以使用搜索功能来选择链接。在某些页面上使用链接列表 (l) 会有所帮助。

最后,我会添加一些健全性检查,看看下载的文件是否真的是你想要的。

于 2010-05-21T14:34:28.100 回答