Автор — Lucas Westermann

Перед тем, как я начну статью за этот месяц, у меня есть несколько поправок к предыдущей. Читатель Grofaty указал на то, что утилита patch не установлена по умолчанию в Ubuntu, а также сообщил о существовании программы vimdiff (vim-подобный интерфейс для просмотра различий в файлах).

Что касается этого месяца, я подумал, что было бы здорово рассказать про две программы командной строки для скачивания сайтов и их страниц, а именно cURL и Wget. Вы можете подумать: «У меня есть Firefox, зачем мне cURL или Wget?» Главная причина, по которой я их использую, заключается в том, что они позволяют сделать копию целого сайта для просмотра в оффлайне, а также скачать страницу или файл, которые блокирует брандмауэр. Существует и другое их применение, например, архивирование своего сайта, разбор содержимого сайта, быстрое скачивание без открытия Firefox или скачивание всех файлов нужного типа (пригодится студентам, посещающим порталы со множеством статей в формате PDF). Для интересующихся отмечу одно тонкое, но важное различие между cURL и Wget. cURL получает код HTML и выводит его в STDOUT (т.е. в консоль), в то время как Wget скачивает HTML-файлы и сохраняет их на диск. Иными словами, cURL идеален для разбора содержимого сайтов (например, если вы пишете сценарий для поиска в Google), а Wget прекрасно подходит для создания архивов сайтов.

Вот несколько примеров для cURL:

curl -L www.w3schools.com/css

Эта команда заставляет cURL следовать за любым переходом на указанной странице w3schools.com (в частности, Location: pointers). На этом сайте cURL автоматически перейдёт по ссылке «Следующая глава».

curl -u name:password https://mail.google.com/gmail/feed/atom

Данная команда передаёт cURL имя пользователя и пароль, что позволяет пройти авторизацию на сайте (в данном случае — RSS-ленте Gmail). Тем самым cURL позволяет получить доступ к сайту, не запуская Firefox.

Приведённые примеры могут быть использованы в скрипте, который делает поисковый запрос к Google и возвращает результат поиска в HTML. Они также позволяют авторизовать свою учётную запись в Gmail.

И примеры Wget:

wget -r -l3 http://w3schools.com/css/

Эта команда отправляет Wget на w3schools.com и позво-ляет рекурсивно переходить по ссылкам на три уровня (Homepage — CSS Intro — CSS Syntax). Следует отме-тить, что рекурсивный переход по сайту может сильно загрузить сервер, поэтому его всегда следует использовать вместе с указани-ем глубины рекурсии, чтобы минимизировать нагрузку.

wget -c -U Mozilla www.website.com

Я не указал ссылку на реальный сайт, так как не придумал ничего подходящего. Тем не менее, эта команда Wget выдаёт себя за браузер Mozilla (путём изменения подписи браузера), чтобы обойти ограничения для менеджеров загрузки. Опция «-c» даёт возможность Wget сохранять частично скачанные файлы с возможностью возобновления загрузки.

wget -r -l1 -A.pdf --no-parent http://url-to-webpage-with-pdfs/

Данная команда позволяет Wget следовать по одному уровню сайта и скачивать все найденные pdf-файлы. Опция*«–no-parent» не разрешает Wget переходить по ссылкам на уровень вверх, (т.е. на www.test.com с www.test.com/something), что помогает избежать лишней нагрузки на сервер. Опция «-A» позволяет указать список расширений или шаблонов, разделённых запятыми. Для того, чтобы игнорировать файлы определённого типа, используйте «-R» вместо «-A».

Надеюсь, что эта весьма короткая статья наглядно показала мощь Wget и cURL, и, разумеется, вы можете найти исчерпывающую информацию в руководствах этих программ. Если у вас есть идеи о том, какие инструменты командной строки мне следует осветить, пишите мне на Iswest34@gmail.com с пометкой «FCM C&C» или «Command & Conquer». Если мне этот инструмент ещё не известен, я бы хотел хорошо разобраться в нём до написания статьи. А если вы найдёте удачное применение cURL и Wget — не стесняйтесь поделиться со мной по электронной почте своими впечатлениями.

Дополнительная литература:

http://curl.haxx.se/docs/httpscripting.html — подробные учебник и руководство по cURL (несколько примеров были взяты оттуда).

http://linuxtuts.blogspot.com/2008/03/tutorials-on-wget.html — отличный учебник по Wget (несколько примеров были взяты оттуда).