Немного о wget

Решил тут на блоге оставить небольшую заметку о wget. Так сказать, чтобы самому не забыть, ну и может быть ещё кому пригодиться. Итак, не секрет, что многие используют wget не только для скачивания отдельного файла или файлов по списку, но и создания полной копии какого-либо сайта у себя на жёстком диске. Вот вы сделали такую копию сайта у себя на жёстком диске и тут с ужасом поняли, что все ссылки ведут исключительно на сайт в интернете, а не на локальную копию. Качать заново? Нет, это не наш метод. Можно написать небольшой скриптик, например на Python, который пробежится по всем скаченным html-файлам и преобразует адреса в ссылках на локальную копию. Но это относительно долго, хотя если есть свободное время и есть желание поупражняться в написании скриптов, то это будет то что надо. 🙂

Есть путь проще. Достаточно запустить wget со следующими опциями:

$ wget -r -k -nc http://some_site.com

Опция -r — рекурсивно скачать указанный сайт
Опция -k — конвертировать абсолютные ссылки в относительные локально. Преобразование будет выполнено только для ссылок на документы, которые действительно были выгружены, остальные ссылки будут оставлены как есть. И хочу отметить, это важно для понимания, что только по завершению выгрузки Wget сможет выяснить, что подлежит конвертации. По этой причине большинство работы будет выполняться по завершению процесса выгрузки.
Опция -nc — не модифицировать локальные файлы во время рекурсивной выборки иерархии документов. Если файлы имеют расширение «.html» или «.htm», то эти файлы будут считываться с локального диска и обрабатываться как будто они были получены с сервера.

Я специально написал опции раздельно, чтобы было понятно, но можно написать и так/p>

$ wget -rknc http://some_site.com

Как говориться, man wget. Через 10-20 секунд (зависит от количества скаченных файлов) вы получите в скаченных html-файлах ссылки на локальные файлы, а не на сайт в интернете.

Немного о wget: 7 комментариев

  1. а) «Немного» пишется слитно. 🙂

    б) httrack в этом плане гораздо удобнее...

  2. Спасибо, исправил.

    Хм, посмотрю, хотя как-то wget'у привык.

  3. однажды давно я выкачал сайт таким образом, так wget (вот же тупость!) преобразовал внешние адреса на _абсолютные_ (!!!) локальные, так что без скрипта всё равно не обошлось =)) Очень надеюсь, что это пофиксили 😉

  4. Так для того и существуют специализированные решения, типа того же httrack.

    Я пару раз с такой фигнёй столкнулся, сказал несколько нехороших слов и перестал пробовать бриться топором (в смысле — выкачивать сайты wget'ом)

Обсуждение закрыто.