Предистория
Пис
ал я биржу для своего сервера Lineage... писал, писал.. и вот встала передо мной задача, показать юзерам иконки предметов, которые они хотят купить/продать. Самому скринить 20'000+ иконок из игры - не то что некогда - впадлу. Толковой базы в приемлемом формате я не нашёл. И тогда у меня возникла идея - распарсить иконки с сайта l2db.ru
Процесс написания
Что мне было нужно? В начале, понять, как получается строка адреса. А строка вышла вида
Код:
http://old.l2db.ru/item.php?id=9449
Так, значит. Теперь, цепляемся за Н-ное место в коде страницы. Этим местом стала строчка, где рисунок включается в текст:
Итак, что необходимо было делать программе:
1. Скачать с сервера страницу /item.php?id=ITEM_ID, где ITEM_ID - число от 1 до, допустим, 20000.
2. Определить, есть ли на ней иконка (предметы с некоторыми ID не существуют)
3. Скачать эту иконку, и сохранить куда-нибудь.
По мере тестирования, обнаружилось, что есть предметы, у которых иконка есть, но в базе её нету. Тогда, всё это дело выдавало "Error 404", и сваливалось. А прога должна висеть всю ночь, и работать без вмешательства...
После некоторых модификаций, алгоритм выглядел так:
1. Получить адрес страницы вида "http://old.l2db.ru/item.php?id=N"
2. Проверить, есть ли страница на сервере
3. Если есть, скачать её, распарсить, и получить ссылку на картинку, если таковая на странице присутствует.
4. Проверить наличие картинки на сервере
5. Если она там есть - скачать и сохранить её.
Простейший парсер написан, готовый (исходники) в архиве.
Пока я писал этот текст, с учётом моего 5-МБитного канала, прога выкачала 1300 картинок.
Парсер достаточно просто может быть переделан под любой сайт, было бы желание... Наслаждайтесь.
P.S. Данный пост не является рекламой Lineage, L2db.ru и других материалов.