我想为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 :(得分:0)
wget
可以在这里有用吗?
这是一个http,https和ftd下载命令行实用程序。它是免费软件(GNU)。它有许多选项,例如身份验证和时间戳(如果文件自上次以来已经更改,则只下载文件)。
答案 1 :(得分:0)
我认为lynx是一个简单的Web自动化任务的好工具,但当然它有其局限性。如果你需要错误检查,你应该使用Perl,Python或Ruby的一个机械化模块(如果你不知道任何一种语言,Python可能是最容易学习的。)
为了让你的lynx脚本更健壮,你可以使用搜索功能来选择链接。在某些使用链接列表(l)的页面上可以提供帮助。
最后,我会添加一些健全性检查,看看下载的文件是否真的是你想要的。