Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

суббота, 24 июля 2010 г.

How to: Как скачать сайт? Альтренативы.

Время от времени (все реже и реже) у меня возникают задачи типа - есть сайт по которому можно гулять онлайн, а мне нужно тоже, только оффлайн. Програмулька есть для этого хорошая TeleportPro. НО:
- если надо выкачать только часть сайта - она не подходит.
- если надо выкачать некоторые страницы будучи залогиненым (форум к примеру) - она не подходит.
Хорошо, а какие есть альтернативы? На этот вопрос я постараюсь сейчас ответить. Читать дальше...

НА поиски альтернативы я потратил много времени и все же нашел ScrapBook pugin для firefox, но и он обладал ограничениями, которые меня не устраивали. Благо доброе опенсорс комьюнити написало extention "ScrapBook Plus". Вікачать его можно тут.

После установки plugin и перезапуска firefox в натройках plugins можно наблюдать новый плагинчик.
 

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


В новоиспеченном диалоге выбираем режим сохранения. 


В диалоге я выбрал: какие типы файлов с сайта мне сохранять окромя html, куда сохранять сайт и самое важное - указал уровень захвата глубины ссылок. Последнее поле указывает когда загрузка сайта будет считаться завершенной. Плагин ScrapBook Plus сперва обрабатывает исходную страницу. Когда ее загрузка завершена он обрабатывает по очереди каждую страничку, на которую ссылалась текущая - это уровень глубины 1. Когда и эти все странички будут обработаны - плагин ScrapBook Plus пойдет еще глубже - уровень глубины 2.

"Обрабатывает", в данном контексте, подразумевает сохранение странички со всеми сопроводительными файлами + обработка линков странички и постановка их в общий пул страничек на обработку. Есть возможность фильтровать линки. Об этом ниже.

После нажатия на "Сохранить страничку" мы увидим результат "обработки" исходной странички - список линков, на которые она ведет.


Помнишь, я говорил про возможность фильтрования? Это как раз и есть основная фишка ScrapBook Plus плагина (в отличии от официального ScrapBook). Вторая фишка - нет предела количеству загружаемых страниц.

Поставим галочку "Фильтр". И немного пошаманим. Почему пошаманим? Потому, что плагин глюкавый (возможно я невразумел его гениального юзабилити). Впрочем гениальность плагина не в юзабилити формы ввода шаблонов, а в том, что эта форма присутствует.

Правило простое - если мы ошиблись в добавлении шаблона - не редактируем/удаляем его, а закрываем окно и повторяем попытку с самого начала + добавлять шаблон сперва Include (с проверкой что он отработал корректно), с последующим добавлением шаблона Exclude (если что-то осталось, что надо исключить).

Чаще всего в качестве Include я добавляю хост сайта, а в качестве Exclude - регулярку исключающую нежелательные админ странички сайта. Кстат! Забыл сказать - в качестве фильтра можно вводить полноценные регулярные выражения, что многократно увеличивает гениальность этой тулы.

Кто не знаком с регулярными выражениями - Википедия в помощь. Для ленивых скажу что любой символ из специальных [ ] \ ^ $ . | ? * + ( ) { } должен сопровождаться с префиксом "\" (без кавычек, естественно). Если подразумевается любое количество символов  между  двумя литералами, то можно воспользоваться  комбинацией ".*" (опять без кавычек).  Пример:  "вася.*катя" сработает для  "вася любит катю" и "вася не любит катю", а так же "вася катю ненавидит". Если надо воспользоваться одним из нескольких услоий, то их необходимо разделить символом "|" (без кавычек), как то "вася|катю".


Итак, наш пример.


1. Тыцнули галочку "Фильтр".
2. Выбрали режим работы фильтра "Exclude" - для исключения линков по шаблону и "Include" для включения линков по шаблону.
3. Собственно шаблон.
4. После ввода шаблона аккуратно жмем Ок.
5. Тут отображаются добавленные фильтры. 
6. А тут результат работы этих фильтров - "обрабатываться" будут только те странички, напротив которых стоит галка.
7. Линки содержащие "firefox/ext" будут включены (вернее по началу они останутся включены, т.к. изначально включено на "обработку" все).
8. А линки, содержащие в своем теле два слэша "/" между которыми находиться текст, содержащий "to", после добавления регулярного фильтра "\/.*to.*\/", будут в последствии отключены.

AХТУНГ! Перед началом "обработки" УБЕДИТЕСЬ, что на страничках нету линков типа http://bla.bla.bla/delete?all=true Если подобные линки есть (а они точно есть как минимум на форумах - ты ведь можешь удалить свои сообщение), то необходимо в шаблон Exclude включить подобные страницы. Конец АХТУНГ!

Для начала "обработки" стоит нажать кнопку Start. "Обработка" начнется последовательно по всем страничкам списка сверху вниз. Причем, при "обработке" каждой новой странички и добавлении из нее всех ее линков в конец списка "обработки", к новым порциям линков будет применен этот же шаблон.

Тут есть не очевидная бяка - часто, при обработке страниц 2 и больше уровня вложенности, появляются такие линки, о которых мы не могли подумать в начале - фильтр наш их не отключит. По идее фильтр можно править во время работы плагина ScrapBook Plus, но я бы не стал этого делать (кроме как в экспериментальных целях).

Я поступал так:
- выделял изначально 3 страницы 1 уровня;
- запускал процесс "обработки";
- после их обработки приостанавливал "обработку";
- вручную отключал все странички, оставляя только 2 страницы 2 уровня;
- запускал процесс "обработки";
- и так далее;
- после того как все уровни обработаются, я наблюдал за тем какие звери (тьху, линки) были в скписке;
- придумывал шаблон, который позволит мне включить желательные, а нежелательные отключить.
- стартовал загрузку повторно, но уже в автономном боевом режиме.

Вот как выглядит загрузка.


В результате загрузки "обработанные" странички будут лежать на твоем винчестере, а линки на них будут заменены с http://... на file://...  В случае надобности кликнуть по "необработанному" линку, ты всегда будешь иметь возможность сделать это, а  при наличии интернета - ты перейдешь на нее.

Enjoy.

P.S. Совсем забыл рассказать, как закачанный сайт получить в заданную папку. Делается это нетривиально (все-таки с юзабилити они погорячились.

Меню ScrapBook Plus -> Показать в боковой панели. В результате сбоку появится панель  плагина ScrapBook Plus.


Далее выбираем папку проекта и вызовем ее контекстное меню, в котором выберем пункт "Управление каталогами":


В диалоге нажмем "Импорт/Экспорт веб-альбомов":


Дальше выберем экспортируемый альбом (у меня их тут несколько одинаковых у тебя скорее всего будет та же картина, если ты как и я неоднократно пытался подобрать шаблон для "обработки" линков, потому выбери последний успешный) .  Выберем папку для сохранения сайта. Нажмем кнопку "Экспорт >>"


Статус экспорта можно посмотреть в консоли, а после окончания процесса в списке появится новый пункт, вызвав контектное меню которого, можно открыть сайт в бруйзере (так же можно просмотреть не экспортированный сайт).


Вот теперь точно Enjoy.

2 комментария:

  1. На всяк випадок, залишу це тут:
    Старі версії: https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/
    Бета: https://www.mozilla.org/uk/firefox/beta/

    ОтветитьУдалить