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は、正確なリンク名とアクションを指定するのではなく、相対的なユーザーアクションで構成されます。そのため、サイト上の何かが変更されたり、場所が変わったり、新しいリンクが追加されたりした場合は、アクションを再作成する必要があります。

また、エラーをチェックできないため、問題が発生した場合(ログインに失敗した場合など)にスクリプトを中止できません。

私が見ているもう1つの選択肢は、Rubyを使用した機械化です(注として、Rubyの使用経験はありません)。

これを改善または書き直すための最良の方法は何でしょうか?

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 に答える