質問

サイトにログインし、特定のページに移動し、最後の実行の結果と比較する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の経験が0があります)。

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

役に立ちましたか?

解決

LynxはシンプルなWeb自動化タスクのための優れたツールだと思いますが、もちろん限界があります。エラーチェックが必要な場合は、Perl、Python、またはRubyに機械化モジュールの1つを使用する必要があります(この言語のいずれもわからない場合は、Pythonが最も簡単に学習できる場合があります)。

Lynxスクリプトをもう少し堅牢にするために、検索関数を使用してリンクを選択できます。リンクリスト(l)を使用する一部のページでは、役立ちます。

最後に、ダウンロードされたファイルが本当に必要なファイルかどうかを確認するために、いくつかの正気チェックを追加します。

他のヒント

たぶん......だろう wget ここで役に立ちますか?

これは、HTTP、HTTPS、FTDのダウンロードコマンドラインユーティリティです。フリーソフトウェア(GNU)です。認証やタイムスタンプなどの多くのオプションがあります(前回から変更された場合のみ、ファイルをダウンロードします)。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top