Правильный способ создания сценария периодического извлечения страницы с сайта https - PullRequest
0 голосов
/ 20 мая 2010

Я хочу создать сценарий командной строки для 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 (как примечание - у меня 0 опыта работы с Ruby).

Что было бы лучшим способом улучшить или переписать это?

Ответы [ 2 ]

0 голосов
/ 21 мая 2010

Я думаю, что lynx - отличный инструмент для простых задач веб-автоматизации, но, конечно, у него есть свои пределы. Если вам нужна проверка ошибок, вы должны использовать один из модулей механизации для Perl, Python или Ruby (если вы не знаете ни одного из этих языков, Python может быть самым простым для изучения).

Чтобы сделать ваш скрипт Lynx более надежным, вы можете использовать функцию поиска для выбора ссылок. На некоторых страницах использование списка ссылок (l) может помочь.

В конце я бы добавил несколько проверок работоспособности, чтобы увидеть, действительно ли загруженные файлы - это то, что вам нужно.

0 голосов
/ 20 мая 2010

Может ли wget быть здесь полезным?

Это утилита командной строки загрузки http, https и ftd. Это свободное программное обеспечение (GNU). У него много параметров, таких как аутентификация и отметка времени (загружать файл, только если он изменился с прошлого раза).

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

...