У меня есть несколько веб-страниц на нескольких разных сайтах, которые я хочу полностью отразить. Это означает, что мне потребуются изображения, CSS и т. д., А ссылки необходимо преобразовать. Эта функция аналогична использованию Firefox для «Сохранить страницу как» и выбора «Веб-страница, завершена». Я хотел бы назвать файлы и соответствующие каталоги чем-то разумным (например, myfavpage1.html, myfavpage1.dir).
У меня нет доступа к серверам, и это не мои страницы. Вот один пример ссылки: Нажми на меня!
Еще немного разъяснений ... У меня есть около 100 страниц, которые я хочу отразить (многие с медленных серверов), я буду копировать работу на Solaris 10 и каждый час выгружать результаты на монтировку самбы, чтобы люди могли их просмотреть. И, да, я, очевидно, пробовал wget с несколькими разными флагами, но не получил тех результатов, которые ищу. Таким образом, указание на страницу GNU wget не очень полезно. Позвольте мне начать с того, где я нахожусь, с простого примера.
wget --mirror -w 2 -p --html-extension --tries=3 -k -P stackperl.html "https://stackoverflow.com/tags/perl"
Из этого я должен увидеть страницу https://stackoverflow.com/tags/perl в файле stackper.html, если у меня были правильные флаги.
Я ничего не очищаю. Я хочу делать именно то, что описал. Я хочу полностью отразить определенные веб-страницы с нескольких разных сайтов, чтобы я мог читать их локально. Функциональность я описал с помощью Firefox. Safari имеет те же функции.





На большинстве современных веб-сайтов интерфейс рассказывает лишь небольшую часть истории. Независимо от инструментов для удаления html, css и javascript, вам все равно будет не хватать основных функций, содержащихся на сервере.
Или, может, вы имели в виду что-то еще.
из вопроса ясно, что ему нужен статический снимок сайта.
Для HTML-версии ваших сайтов вы можете использовать WinHTTrack - бесплатную программу с открытым исходным кодом, доступную под лицензией GPL. Он будет загружать предварительно отрисованные версии ваших страниц, графики, документов, zip-файлов, фильмов и т. д. Конечно, поскольку это зеркальная копия, любой динамический внутренний код, такой как вызовы базы данных, больше не будет динамическим.
Я использую WebReaper
Любопытно, что это то же имя, которое я использовал для созданного мною инструмента командной строки - search.cpan.org/~bdfoy/webreaper-0.31/webreaper.
Я повторю комментарий "это не ясно". Эти веб-страницы / сайты созданы вами и вы хотите разместить их на нескольких серверах? Если да, используйте относительные ссылки в своем HTML, и все будет в порядке. Или используйте в своем и настройте его на каждом сайте. Но относительность - это действительно правильный путь.
Или вы говорите, что хотите загружать веб-сайты (например, домашнюю страницу Stack Overflow, perl.com и т. д.), Чтобы иметь локальные копии на вашем компьютере? Я согласен с Дэниелом - используйте wget.
Джим
Лично у меня в последний раз возникло желание сделать это, я написал скрипт на Python, который сделал копию кеша моего браузера, а затем вручную посетил все страницы, которые я хотел отразить. Очень уродливое решение, но у него есть приятное преимущество в том, что он не запускает никаких сигналов тревоги «Не очищать мою страницу». Благодаря панели вкладок ссылок Опера «вручную» загрузить десятки тысяч страниц оказалось не так сложно, как вы думаете.
Спасибо. Можете поделиться сценарием?
Извините, у меня его больше нет. Это было что-то быстрое и грязное; он будет работать только с очень специфическими версиями Opera.
Если вы просто хотите запустить команду и получить копию веб-сайта, используйте инструменты, которые предлагали другие, такие как wget, завиток или некоторые инструменты с графическим интерфейсом. Я использую свой личный инструмент, который я называю веб-жнец (хотя это не Windows WebReaper. Я знаю несколько программ Perl, включая веб-зеркало и несколько других, которые вы можете найти на CPAN.
Если вы хотите сделать это в программе на Perl, которую вы пишете (поскольку в вашем ответе есть тег «perl»), в CPAN есть много инструментов, которые могут помочь вам на каждом этапе:
Удачи, :)
Если wget сложен или у вас нет Linux-бокса, вы всегда можете использовать WebZip
Похоже, вам нужна функция кеширования, предоставляемая хорошим прокси-сервером.
Может заглянуть в что-нибудь вроде SQUID? Уверен, что сможет.
Это скорее вопрос типа системного администратора, чем программирования.
Вы можете использовать инструменты wget gnu для захвата всего сайта следующим образом:
wget -r -p -np -k URL
или, если вы используете Perl, попробуйте следующие модули:
LWP :: Простой
WWW :: Mechanize
Я пытаюсь отредактировать ваше сообщение, но изменение состоит менее чем из 6 символов: «дыра» (что означает пустое место в твердом теле) должно быть «целым» (то есть полностью или полностью).
Здесь много непонятного. У вас есть доступ к серверу? Если это так, то есть способы лучше, чем простое копирование файлов через веб-клиент, которое вы предлагаете. Если нет, то что вы делаете, собирая и публикуя контент с чужого сервера? Пожалуйста, укажите конкретику; это поможет нам ответить.