Создание полной локальной копии веб-сайта с помощью Wget

хорошо, вот что мне нужно :

  • Я на Mac (Mac OS X 10.6.8)
  • Я хочу полностью отразить веб-сайт на моем жестком диске (это что я использую в качестве теста)
  • Я хочу, чтобы все изображения и предпосылки там, так что веб-сайт доступен для просмотра в автономном режиме
  • Я хочу, чтобы относительные ссылки на всех страницах обновлялись соответственно
  • (* опционально) .html расширения для всех файлов было бы здорово, так что они легко распознаются и открываются браузером

это то, что я использую:

wget --recursive --no-clobber --page-requisites --convert-links --html-extension --domains wikispaces.com http://chessprogramming.wikispaces.com/

дело в том, что:

  • .css файлы и изображения и т. д., похоже, не загружаются - по крайней мере, до уровня, который я оставил (хорошо, может быть, они б быть загружены, если процесс был завершен, поэтому мы можем пропустить этот)
  • расширение html не добавляется
  • ссылки не обращенный

Так... есть идеи?

30
задан Hennes
10.03.2023 23:26 Количество просмотров материала 2933
Распечатать страницу

2 ответа

во-первых, это, кажется, OS X только проблема. Я могу использовать команду выше на Ubuntu 14.04 LTS и она работает из коробки! Несколько предложений:

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

  1. когда вы говорите --domains wikispaces.com, вы не будете загружать связанные CSS файлы, расположенные в других доменах. Некоторые таблицы стилей на этом веб-сайте расположены на http://c1.wikicdn.com как предполагает источник индекса.HTML-код

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

  3. Wget не распознает комментарии при разборе формат HTML. Когда wget запущен, я вижу следующее:

--2016-07-01 04:01:12--  http://chessprogramming.wikispaces.com/%3C%25-%20ws.context.user.imageUrlPrefix%20%25%3Elg.jpg
Reusing existing connection to chessprogramming.wikispaces.com:80.
HTTP request sent, awaiting response... 404 Not Found
2016-07-01 04:01:14 ERROR 404: Not Found.

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

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

использовать -U somebrowser подделать клиент и притвориться браузером. Например, -U mozilla может быть добавлен, чтобы сообщить серверу, что Mozilla / Firefox запрашивает страницу. Это, однако, не проблема здесь, так как я могу скачать сайт без этого аргумента.

  1. скорость загрузки и запросов важна. Серверы не хотят, чтобы их производительность была раздута роботами, запрашивающими данные с их сайта. Используйте --limit-rate= и --wait= аргументы в Wget ограничить скорость загрузки и подождать несколько секунд между генерацией запросов get для отдельных файлов.

например

wget -r --wait=5 --limit-rate=100K <other arguments>

подождать 5 секунд между запросами get и ограничить скорость загрузки до 100 кбит / с. Еще раз, это не проблема здесь, потому что сервер не требует от меня, чтобы ограничить скорость загрузки, чтобы получить веб-сайт.

наиболее вероятный случай здесь (1). Замените --domains wikispaces.com С --domains * и снова попробовать. Давайте посмотрим где мы получаем. Вы должны быть в состоянии получить файлы CSS, по крайней мере.

расширение html не добавляется

HTML расширение добавляется при запуске команды.

ссылки не преобразуются

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

когда вы передаете аргумент в HTTP get запрос (для пример http://chessprogramming.wikispaces.com/wiki/xmla?v=rss_2_0 есть аргументы v=rss_2_0), запрос обрабатывается некоторым скриптом, запущенным на сервере, например PHP. Аргументы помогут вам выбрать правильную версию сценария в зависимости от аргумента(ов). Помните, когда вы зеркалируете сайт, особенно Вики, которая работает на PHP, вы не можете точно зеркала сайт, если вы не получаете оригинальные PHP скрипты. HTML-страницы, возвращаемые PHP-скриптами, - это всего лишь одно лицо страницы, которое вы можете увидеть с этим сценарий. Правильный алгоритм, который создает страница хранится на сервере и будет корректно зеркалироваться только в том случае, если вы получите исходный PHP файл, что вы не можете сделать с помощью HTTP. Для этого нужен FTP доступ к серверу.

надеюсь, что это помогает.

3
отвечен U. Muneeb 2023-03-12 07:14

Вариант 1 из ответа российской ракеты "Союз", безусловно, был проблемой в моем случае. На самом деле, это просто пошло не так, потому что я просил https://censoreddomain.com вместо https://www.censoreddomain.com (Примечание www.). Как только я добавил www.,wget радостно поцарапал весь сайт для меня. Так что важно точно соответствует каноническому имени домена, который вы пытаетесь очистить.

так как ошибка была моей, я думаю, что этот "улов" относится к wget на всех платформах, а не только ОС Х.

1
отвечен Julian 2023-03-12 09:31

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх