TechBlogSD - Все для WordPress и WEB разработки
WEB и WordPress инструкции, новости, обзоры тем и плагинов

Как скачать весь сайт при помощи Wget на Windows

9 126

Вы узнаете, как архивировать практически любой богатый информацией сайт для создания автономной версии для себя. Бесплатная, кроссплатформенная утилита командной строки wget может загрузить весь веб-сайт. Статья проведет вас через весь процесс. Я начну с нуля, а затем перейду к подробным примерам выбранных настроек, чтобы получить превосходный архив после обработки. После прочтения этого урока он станет намного менее пугающим, чем кажется.

Почему вы хотите это сделать?

Вопреки распространенному мнению, не все в Интернете существует всегда. Сайты закрываются, подвергаются цензуре, приобретаются, перепроектируются или просто теряются. Эта идея исходит от сообщества накопителей данных в Reddit, где процесс создания архивов для развлечения не является чем-то новым. Хотя мы не можем предсказать или предотвратить катастрофическое событие на нашем любимом веб-сайте, мы, несомненно, можем сохранить его в нынешнем виде .

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

Как это работает?

Wget будет начинать с определенного URL и посещать каждую ссылку, возвращаясь к бесконечной глубине. В конечном итоге он может сканировать весь сайт. То, как я его настроил, гарантирует, что он будет загружать только весь сайт, а не весь интернет – случайно . Другими словами, он не будет бродить по внешним сайтам и ничего не загружать с них. Вы получите все активы, такие как JS, CSS и изображения. Конечно, и все внутренние ссылки будут преобразованы в относительные ссылки. Последнее имеет жизненно важное значение для просмотра в автономном режиме копии, а исключенные или внешние ссылки остаются неизменными.

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

Я знаю, что это не относится строго к WordPress, но работает исключительно хорошо с блогами, использующими эту платформу. Тот факт, что блоггер использует некоторые стандартные виджеты WordPress на боковой панели (например, ежемесячный архив или облако тегов), очень помогает ботам.

Настройка wget в Windows

В то время как субкультура, использующая wget ежедневно, сильно ориентирована на Unix, использование wget в Windows немного более необычно. Если вы попытаетесь найти его и вслепую загрузить с официального сайта, вы получите кучу исходных файлов, а не файл .exe. Средний пользователь Windows хочет двоичные файлы , поэтому:

  • Получите последнюю версию wget для Windows, выберите zip-версию последней версии и распакуйте ее куда-нибудь. Я использую папку для переносимого программного обеспечения, так как это не требует установки.

Если вы попытаетесь открыть файл .exe, скорее всего, ничего не произойдет, просто вспышка командной строки. Я хочу получить доступ к этому wget.exe, имея открытую командную строку в папке, в которую я буду загружать весь архив веб-сайта. Нецелесообразно перемещать .exe туда и копировать его в любую другую папку архива в будущем, поэтому я хочу, чтобы он был доступен для всей системы . Поэтому я «регистрирую» его, добавляя в переменные среды Windows.

"C:Windowssystem32rundll32.exe" sysdm.cpl,EditEnvironmentVariables
  1. Нажмите Windows + R, вставьте указанную выше строку и нажмите Enter
  2. Под Пользовательскими переменными найдите Путь и нажмите Редактировать…
  3. Нажмите New и добавьте полный путь к тому месту, куда вы извлекли wget.exe
  4. Нажмите ОК, ОК, чтобы закрыть все

Чтобы убедиться, что он работает, снова нажмите Windows+ Rи вставьте cmd /k "wget -V"– он не должен сказать, что «wget» не распознан

Wget на Windows

Настройка wget для загрузки всего сайта

Большинство настроек имеют короткую версию, но я не собираюсь их запоминать или вводить. Более длинное имя, вероятно, более значимое и узнаваемое. Я выбрал эти конкретные настройки из подробного руководства по wget, так что вам не нужно погружаться слишком глубоко, так как это относительно длинное чтение. Проверьте официальное описание этих настроек, если хотите, так как здесь я только разделяю свое мнение и почему я их выбрал. В порядке важности, вот они.

Настройки для использования

--mirror

Это набор других специфических настроек, все, что вам нужно знать, это волшебное слово, которое позволяет бесконечное сканирование рекурсии. Звучит необычно? Потому что это! Без этого вы не сможете скачать весь сайт, потому что у вас, вероятно, нет списка каждой статьи.

--page-requisites

При этом wget загружает все ресурсы, на которые ссылаются страницы, такие как CSS, JS и изображения. Это важно использовать, иначе ваш архив будет очень поврежден.

--convert-links

Это позволяет просматривать ваш архив локально. Это влияет на каждую ссылку, которая указывает на страницу, которая будет загружена.

--adjust-extension

Представьте, что вы сделали все возможное, чтобы загрузить весь веб-сайт, чтобы получить неиспользуемые данные. Если файлы не заканчиваются в своих естественных расширениях, вы или ваш браузер не сможете их открыть. В настоящее время большинство ссылок не содержат суффикс .html, хотя они должны быть .html файлами при загрузке. Этот параметр помогает вам открывать страницы, не размещая архив на сервере. Небольшое предостережение в том, что оно пытается быть умным, чтобы определить, какое расширение использовать, и оно не идеально. Если вы не используете следующую настройку, контент, отправляемый через gzip, может закончиться довольно непригодным расширением .gz.

--compression=auto

Я обнаружил, что при работе с ресурсами, сжатыми gzip, такими как изображение SVG, отправленное сервером, это исключает возможность загрузки, такого контента как logo.svg.gz, который практически невозможно загрузить локально. Объединить с предыдущей настройкой. Обратите внимание, что если вы используете Unix, этот переключатель может отсутствовать в вашем wget, даже если вы используете последнюю версию. Подробнее на Как может отсутствовать сжатие в моем wget?

--reject-regex "/search|/rss"

Боты могут сойти с ума, когда они достигают интерактивных частей веб-сайтов и находят странные запросы для поиска. Вы можете отклонить любой URL, содержащий определенные слова, чтобы предотвратить загрузку определенных частей сайта . Скорее всего, вы обнаружите только то, что должны были удалить после того, как wget потерпит неудачу хотя бы один раз. Для меня это породило слишком длинные имена файлов, и все это застыло. Хотя статьи на сайте имеют хорошие короткие URL-адреса, длинная строка запроса в URL-адресе может привести к длинным именам файлов. Регулярное выражение здесь является «основным» регулярным выражением POSIX.так что я бы не стал зацикливаться на правилах. Кроме того, это довольно сложно проверить методом проб и ошибок. Одна хитрость заключается в том, что шаблон / поиск будет даже соответствовать законной статье с URL yoursite.com/search-for-extraterrestrial-life или аналогичным. Если это проблема, то будьте более конкретны.

Дополнительные настройки

--no-if-modified-since

Я включаю его только когда сталкиваюсь с сервером, на котором wget жаловался на то, что мне следует использовать это. Я не собираюсь перезапускать процесс позже в той же папке, чтобы догнать текущий сайт. Следовательно, не имеет большого значения, как wget проверяет, изменились ли файлы на сервере.

--no-check-certificate

Проверка сертификатов SSL не является критически важной задачей . Это предотвращает некоторые головные боли, когда вы заботитесь только о загрузке всего сайта без входа в систему.

--user-agent

--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Некоторые хосты могут обнаружить, что вы используете wget для загрузки всего сайта и полностью блокируете вас. Спуфинг агента пользователя приятно замаскировать эту процедуру как обычного пользователя Chrome. Если сайт блокирует ваш IP, следующим шагом будет продолжение работы через VPN и использование нескольких виртуальных машин для загрузки стратифицированных частей целевого сайта (ой). Возможно, вы захотите проверить --waitи --random-waitварианты, если ваш сервер умный, и вам нужно замедлить и задержать запросы.

--restrict-file-names=windows

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

--backup-converted

Стоит упомянуть, поскольку он будет сохранять оригинальную копию каждого файла, в который wget конвертировал ссылку . Это может почти удвоить ваш архив и требует очистки, если вы уверены, что все в порядке. Я бы не стал этим пользоваться.

Открытие командной строки в нужном месте

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

  1. Вы знаете тренировку: Windows+ Rи напишите cmdи нажмитеEnter
  2. Тип, cd /d C:archive folderгде /dкоммутатор позволяет менять диски, а последний – путь к архиву.

Если вы хотите узнать, как cdработает, введите help cdзапрос. В некоторых конфигурациях необходимо заключать путь в кавычки, если он имеет пробел.

Дополнительные способы

Запуск загрузки

Как только я объединю все варианты, у меня появляется этот монстр . Это можно выразить более лаконично, используя варианты с одной буквой. Тем не менее, я хотел, чтобы его было легко модифицировать, сохраняя длинные имена опций, чтобы вы могли интерпретировать, какие они есть.

wget --mirror --page-requisites --convert-links --adjust-extension --compression=auto --reject-regex "/search|/rss" --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" https://yoursite.com

Осталось только запустить эту команду для загрузки всего сайта. Приспособьте это к своим потребностям: по крайней мере измените URL в конце этого. Будьте готовы, что это может занять часы, даже дни – в зависимости от размера целевого сайта. И вы не видите прогресса, так как только задним числом можно понять размер архива.

Я не шучу, когда предупреждаю о множестве маленьких файлов.

Пример размера архива при загрузке всего сайта с помощью wget.

На больших сайтах с десятками или даже сотнями тысяч файлов, статей, вы можете сохранить их на SSD до завершения процесса, чтобы не допустить уничтожения вашего жесткого диска. Они лучше справляются со многими небольшими файлами. Я рекомендую стабильное подключение к Интернету (желательно не беспроводное) вместе с компьютером, который может обеспечить необходимое время безотказной работы. Приближаясь к завершению, вы увидите, что wget конвертирует ссылки в файлы. Что-то вроде:

Converted links in 35862 files in 187 seconds.

После этого вы должны получить обратно командную строку со строкой ввода. Если он останавливается рано, желательно изменить настройки и начать все заново в пустой папке.

Постобработка архива

К сожалению, ни одна автоматизированная система не является идеальной, особенно если ваша цель – загрузить весь сайт. Вы можете столкнуться с некоторыми небольшими проблемами. Откройте заархивированную версию страницы и сравните ее рядом с живой. Там не должно быть существенных различий. Я удовлетворен, если весь текстовый контент там с изображениями. Гораздо меньше волнует, работают ли динамические части или нет. Здесь я рассматриваю наихудший сценарий, когда изображения отсутствуют.

Современные сайты используют srcsetатрибут и тег для загрузки адаптивных изображений. Хотя wget постоянно совершенствуется, его возможности отстают от передовых технологий современного Интернета. Хотя в wget версии 1.18 добавлена поддержка, ей не нравится более экзотическая комбинация тегов. Это приводит к тому, что wget только находит запасное изображение в теге img, а не в любом из исходных тегов. Он не загружает их и не затрагивает их URL. Обходной путь для этого состоит в массовом поиске и замене (удалении) этих тегов, поэтому резервное изображение все еще может появиться.<picture> ... </picture>srcset``<picture> <source> <img> </picture>

  1. Получить последнюю версию grepWin – я рекомендую портативную версию.
  2. Добавить папку архива в Поиск в
  3. Выберите Regex search и Search для:<source media=".*">
  4. Добавить *.htmlв имена файлов совпадают:
  5. Нажмите « Заменить» (вы можете проверить, что он что-то находит с помощью функции « Поиск» )

Вы можете использовать grepWin как, чтобы исправить другие повторяющиеся проблемы . Одна статья не может подготовить вас ко всему и не научит вас регулярным выражениям (подсказка: в них нет ничего регулярного ). Таким образом, этот раздел просто дает вам представление о корректировке результатов. Подход Windows не подходит для расширенной пост-обработки. В Unix-подобных системах есть более удобные инструменты для массовой обработки текста, такие как sed и оригинальный grep .

Возможная альтернатива без рекурсивной загрузки

Если вы хотите загрузить значительную часть сайта со всеми упомянутыми преимуществами, но без рекурсивного сканирования, вот другое решение. Wget может принять список ссылок для автономного использования. Как вы пришли к этому списку, зависит от вас, но вот идея.

Используйте расширенный поиск Google особым образом, чтобы определить страницы, которые вам нравятся, с целевого сайта. Примером поиска может быть site:yoursite.com "About John Doe"возвращение проиндексированных сообщений, написанных этим Автором (если на месте нет способа добраться до этого списка). Предполагается, что под статьей есть поле об этом авторе. Временно изменяя страницу результатов поиска Google, чтобы отображать до 100 результатов на страницу, в сочетании с таким расширением, как Copy Links for Chrome, вы можете быстро собрать свой список.

wget --input-file=links.txt --page-requisites --convert-links --adjust-extension --compression=auto --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Я добавил --input-file=links.txtпри сбросе --mirror --reject-regexнастроек.

Заключительные мысли

Теперь, когда у вас есть некоторое представление о том, как загрузить весь веб-сайт, вы можете узнать, как обращаться с таким архивом. Множество крошечных файлов – это смерть многих систем, а это означает, что их передача, резервное копирование или проверка на вирусы будут крайне медленными , особенно если вы не храните их на SSD. Если вы не хотите активно просматривать архив, я рекомендую сжать его. Основная причина не в космических требованиях. Наличие архива в виде одного большого файла или серии больших файлов делает его более управляемым. Вы можете использовать RAR’s Store или метод Fastest Compression для быстрого создания пакета. Если контент в основном не текстовый, он может не выиграть от дополнительного сжатия. Наличие записи восстановления в архиве RAR (не добавлен по умолчанию) помогает в случае аппаратных сбоев, таких как сбойные сектора или другие повреждения данных во время хранения или передачи.

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

Пожалуйста, поймите, что каждый сервер отличается и то, что работает на одном, может быть совершенно не так для другого. Это отправная точка. Существует еще много информации об архивации сайтов. Удачи вам в накоплении данных!

Источник записи: https://letswp.io

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее