Как полностью отразить веб-страницу?

У меня есть несколько веб-страниц на нескольких разных сайтах, которые я хочу полностью отразить. Это означает, что мне потребуются изображения, 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, если у меня были правильные флаги.

Здесь много непонятного. У вас есть доступ к серверу? Если это так, то есть способы лучше, чем простое копирование файлов через веб-клиент, которое вы предлагаете. Если нет, то что вы делаете, собирая и публикуя контент с чужого сервера? Пожалуйста, укажите конкретику; это поможет нам ответить.

bradheintz 30.12.2008 20:48

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

anon 30.12.2008 21:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
28 270
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

На большинстве современных веб-сайтов интерфейс рассказывает лишь небольшую часть истории. Независимо от инструментов для удаления html, css и javascript, вам все равно будет не хватать основных функций, содержащихся на сервере.

Или, может, вы имели в виду что-то еще.

из вопроса ясно, что ему нужен статический снимок сайта.

Dan Rosenstark 31.12.2008 00:17

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

http://www.httrack.com/

Я использую WebReaper

Любопытно, что это то же имя, которое я использовал для созданного мною инструмента командной строки - search.cpan.org/~bdfoy/webreaper-0.31/webreaper.

brian d foy 30.12.2008 21:01

Я повторю комментарий "это не ясно". Эти веб-страницы / сайты созданы вами и вы хотите разместить их на нескольких серверах? Если да, используйте относительные ссылки в своем HTML, и все будет в порядке. Или используйте в своем и настройте его на каждом сайте. Но относительность - это действительно правильный путь.

Или вы говорите, что хотите загружать веб-сайты (например, домашнюю страницу Stack Overflow, perl.com и т. д.), Чтобы иметь локальные копии на вашем компьютере? Я согласен с Дэниелом - используйте wget.

Джим

Лично у меня в последний раз возникло желание сделать это, я написал скрипт на Python, который сделал копию кеша моего браузера, а затем вручную посетил все страницы, которые я хотел отразить. Очень уродливое решение, но у него есть приятное преимущество в том, что он не запускает никаких сигналов тревоги «Не очищать мою страницу». Благодаря панели вкладок ссылок Опера «вручную» загрузить десятки тысяч страниц оказалось не так сложно, как вы думаете.

Спасибо. Можете поделиться сценарием?

nealmcb 06.05.2016 17:17

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

Brian 06.05.2016 17:40
Ответ принят как подходящий

Если вы просто хотите запустить команду и получить копию веб-сайта, используйте инструменты, которые предлагали другие, такие как 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 символов: «дыра» (что означает пустое место в твердом теле) должно быть «целым» (то есть полностью или полностью).

Joseph Hansen 30.03.2015 21:58

Другие вопросы по теме