Как сохранить все веб-страницы, связанные с одного

15

Я хотел бы сохранить эту веб-страницу и все страницы, на которые она ссылается. и надеемся, что между сохраненными веб-страницами будет такая же связь.

Есть ли способы вместо открытия и сохранения каждой связанной страницы?

Тим
источник

Ответы:

12

Вы можете делать то, что хотите, с помощью утилиты командной строки wget . Если вы предоставите ему -rопцию, он будет рекурсивно загружать веб-страницы. Например:

wget -r http://mat.gsia.cmu.edu/orclass/integer/integer.html

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

wget -r 5 http://mat.gsia.cmu.edu/orclass/integer/integer.html
Wuffers
источник
@ Марк: Спасибо! Теперь я пытаюсь загрузить mat.gsia.cmu.edu/orclass и страницы, на которые он ссылается, с помощью команды wget -r mat.gsia.cmu.edu/orclass . wget создаст каталог mat.gsia.cmu.edu под тем, который я указал, и загрузит страницы под ним. Но ссылки между загруженными страницами не содержат mat.gsia.cmu.edu в своих путях, поэтому это становится проблемой, и я не могу перейти с одной страницы на другую, щелкая ссылки. Мне было интересно, почему и как решить проблему? Благодарность!
Тим
Я не думаю, что вы можете рекурсивно скачивать внешние ссылки, @Tim.
Вуфферс
Означают ли "внешние ссылки" те, которые не соответствуют текущему пути?
Тим
@Tim: Под внешними ссылками я имею в виду ссылки, которые ссылаются за пределы mat.gsi.cmu.edu
Wuffers,
1
@ Тим: О, хорошо. Извините за недопонимание. Я думаю, что вы могли бы попробовать отредактировать HTML-файлы самостоятельно, чтобы проверить и попытаться заставить их работать.
Вуфферс
10

Эта тема старая, но другие могут посмотреть на нее. Спасибо, Вуфферс, за то, что указали мне правильное направление, но в продолжение ответа Вуфферса: современная версия wget имеет ряд полезных опций для повторяющихся ссылок и их исправления как локальных относительных ссылок, так что вы можете перемещаться по локальной копии. веб-сайта. Используйте параметр -r для рекурсии, параметр -k для исправления локальных ссылок, параметр -H для перехода в домены, отличные от исходного, параметр -D для ограничения областей, в которые вы переходите, параметр -l для ограничения глубина рекурсии и опция -p, чтобы убедиться, что листья вашего обхода имеют все необходимое для правильного отображения. Например, следующая программа загрузит страницу и все, на что она сразу ссылается, что делает ее доступной для локального просмотра,

wget -r -l 1 -p -k -H -D domain.com,relateddomain.com http://domain.com/page/in/domain

Используя команду, аналогичную приведенной выше, я смог загрузить кусок вики-страницы с внешними ссылками на свой локальный диск, не загружая мегабайты посторонних данных. Теперь, когда я открываю корневую страницу в своем браузере, я могу перемещаться по дереву без подключения к Интернету. Единственным раздражителем было то, что корневая страница была похоронена в подкаталогах, и мне пришлось создать страницу перенаправления верхнего уровня, чтобы ее было удобно отображать. Может потребоваться некоторое количество проб и ошибок, чтобы понять это правильно. Прочитайте справочную страницу wget и поэкспериментируйте.

Пабло Халперн
источник
4

Вы можете использовать сканер веб-сайтов, такой как httrack , который является бесплатным.

С веб-сайта;

[httrack] позволяет вам загружать сайт World Wide Web из Интернета в локальный каталог, рекурсивно создавать все каталоги, получать HTML, изображения и другие файлы с сервера на ваш компьютер. HTTrack организует относительную структуру ссылок исходного сайта. Просто откройте страницу «зеркального» веб-сайта в своем браузере, и вы сможете просматривать сайт по ссылке, как если бы вы просматривали его в Интернете.

RJFalconer
источник
1
+1 Отличное приложение! Но он также захватывает все связанные zip-файлы, которые я не хотел. Но тогда мне следовало сначала прочитать инструкцию!
finlaybob
Да, он может / будет переходить по всем ссылкам, поэтому будет загружать файлы. (@Finlaybob вы знаете, что домашняя страница, указанная в вашем профиле, была взломана?)
RJFalconer
Я не был! Я посмотрю на это - спасибо, что сообщили мне знать!
finlaybob