Привет всем!
Ни для кого не секрет, что существуют разные качалки, позволяющие сохранять оффлайновую версию сайта к себе на диск. В том числе, есть очень хороший опенсорсный
HTTrack Website Copier. Да и традиционный Wget способен проделывать интересные вещи, если грамотно указать ключи (подробнее
тут).
Но у всех этих средств есть один недостаток - они слишком универсальны.
Поэтому скачивают много лишнего, не зная, что именно нужно пользователю. Они просто проходят на заданную глубину по всем обнаруженным ссылкам, и вытягивают оттуда всё, до чего могут дотянуться.
На многих сайтах встречаются "полезные ссылки", и это просто труба - качалка заглядывает по каждому адресу, оттуда переходит ещё куда-нибудь, начинает грузить кулинарные рецепты...
Чтобы хоть отчасти справиться с этой проблемой, придуманы механизмы фильтрации адресов по маскам. (В том же HTTrack Website Copier имеются достаточно неплохие возможности для этого.) Но всё равно, это довольно грубый подход, оставляющий много лишнего. (А иногда и отсекающий нужное.)
Помучившись с разными качалками, я пришёл к выводу, что самый лучший выход для людей, владеющих хотя бы основами программирования, - это писать свой собственный небольшой скрипт для скачивания,
заточенный под конкретный сайт, с которого планируется сохранить данные.
Ведь использование логических операторов предоставляет гораздо больше простора, чем всякие маски.
Ты уже словами, а не мимикой объясняешь компьютеру, чего тебе надо.
Мне известно, что вот
здесь приведены основы bash-скриптинга. Вот
тут - Advanced Bash-Scripting Guide на русском. В принципе, разобраться несложно.
Однако освоить скриптовый язык - это только полдела. Надо представлять себе, как его правильно использовать.
В связи с этим у меня есть несколько вопросов:
1. Как, используя терминал, загрузить страницу из веба сразу в переменную, для последующего поиска по ней? И не слишком ли это большое извращение? Может, существуют какие-то другие, более тонкие методы?
2. Можно ли как-то загружать результат работы php-скриптов? Или сохранение, скажем, форумов скриптовым методом невозможно? (Типа, доступен лишь жесткий html?)
3. Вопрос, связанный с предыдущим. Как быть, если при заходе на страницу должна происходить переадресация? (Скажем, на сайте установлена защита от скачивания по прямым ссылкам.) Реально ли вообще в этом случае загрузить файл из консоли?
4. Насколько быстрым обещает быть анализ каждой веб-страницы скриптом? (Я увижу окончание процесса, хотя бы когда выйду на пенсию?..)
P.S. Вот
тут есть готовый скрипт
siteget, но он лишь упрощает использование Wget, подставляя ряд ключей автоматом. А надо, чтобы bash-скрипт анализировал содержимое веб-страниц в соответствии со своей программой, брал на заметку нужные ссылки, отсеивал лишние. (Из-за чего, собственно, весь сыр-бор.)