Сохранить полную веб-страницу

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

Конечно, я могу читать файлы с php очень легко с помощью fopen("http://website.com", "r") или fsockopen() но главная цель – сохранить полные веб-страницы, чтобы в случае их снижения , он все равно может быть доступен другим, например, «машиной времени программирования» 🙂

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

Решения Objective-C также приветствуются, так как я также пытаюсь выяснить его.

Благодаря!

Related of "Сохранить полную веб-страницу"

Вам действительно нужно разобрать html и все файлы css, на которые ссылаются, что НЕ легко. Однако быстрый способ сделать это – использовать внешний инструмент, например wget. После установки wget вы можете запустить из командной строки wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off http://example.com/mypage.html

Это загрузит mypage.html и все связанные файлы css, изображения и изображения, связанные с css. После установки wget в вашей системе вы можете использовать функцию system() php для управления программным способом wget .

ПРИМЕЧАНИЕ. Для правильного сохранения изображений, которые являются ссылками через файлы css, вам нужно как минимум wget 1.12.

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

Краткий ответ: Нет.

Более длинный ответ: если вы хотите сохранить каждую страницу на веб-сайте, вам придется читать каждую страницу на веб-сайте с чем-то на каком-то уровне.

Вероятно, стоит посмотреть на приложение wget Linux, которое может сделать что-то вроде того, что вы хотите.

Одно слово предупреждения – сайты часто имеют ссылки на другие сайты, которые имеют ссылки на другие сайты и так далее. Убедитесь, что вы положили какую-то stop if different domain в вашем пауке находится stop if different domain состояние stop if different domain !

Если вы предпочитаете решение Objective-C, вы можете использовать класс WebArchive из Webkit .
Он предоставляет публичный API, который позволяет хранить целые веб-страницы в виде файла .webarchive. (Как Safari, когда вы сохраняете веб-страницу).

Некоторые интересные особенности формата webarchive :

  • полностью автономный (включая css, скрипты, изображения)
  • Поддержка QuickLook
  • Легко разлагать

Независимо от того, какое приложение будет выполнять работу (ваш код или код, который вы найдете), нужно будет сделать именно это: загрузите страницу, проанализируйте ее для ссылок на внешние ресурсы и ссылки на другие страницы, а затем загрузите все это вещи. Так работает Интернет.

Но вместо того, чтобы делать тяжелый подъем, почему бы не проверить локон и wget ? Они являются стандартными для большинства Unix-подобных ОС, и делают практически то, что вы хотите. В этом случае ваш браузер, вероятно, тоже работает, по крайней мере, на одной странице (хотя было бы труднее запланировать это).

Я не уверен, что вам нужно программное решение для «обхода веб-сайтов» или лично для сохранения веб-сайтов для автономного просмотра, но если это последнее, есть отличное приложение для Windows – Teleport Pro и SiteCrawler для Mac.