Сайт посвящен системе FeedМaster
Сегодня мне задали вопрос "Как узнать сигнатуру для сайта с которого будешь грабить?"
Потому я решил написать небольшую практическую статью о том, как правильно составить сигнатуру для парсинга сайта источника:
для примера возьмём источник xttp://allcredits.ru/rss/
последовательность действий которые нужно выполнить:
1. открываем ленту браузером- я использую Firefox
2. далее открываем любую публикацию из тех что есть в ленте, например эту xttp://www.allcredits.ru/1/15346/
3. открываем исходный код публикации (source code) и ищем где в коде находится текст публикации, которую собственно мы будем грабить.
4. Суть метода: нужно составить такую комбинацию тэгов и команд {get} и {skip} чтобы парсер чётко знал какой участок грабить а какой пропустить. Напомню что команда {get} дает указание парсеру грабить, а команда {skip} - пропустить.
Парсер работает по принципу: ищем метку, грабим или пропускаем до следующей метки и так далее. Метками выступают в данном случае участки ХТМЛ кода.
Рассмотрим на примере - вот исходный код страницы источника:
в ХТМЛ коде самым близким уникальным тэгом к участку который нужно сграбить, есть код <span class="date">. Также, можно заметить что контент заканчивается тэгом <br clear=all>.
Остался маленький нюанс: нам нужно выбросить дату "5 июня 2008 года", в это нам поможет команда {skip}.
Следовательно сигнатурой для парсинга этого источника будет "<span class=date>{skip}</span>{get}<br clear=all>".
Эту команду нужно добавить в парсер в поле "Get content:"
Запускаем парсер, получаем результат:
Возможно кто-то заметил, что парсер как-то по другому работает, а именно добавление публикации происходит не так как в версии 1.4.x, а после парсинга каждой публикации, она сразу добавляется в блог. Это потому, что я использовал в этом обзоре новую версию парсера 1.5, которую сейчас тестируем. Также замечу, что добавление публикаций происходит через XML-RPC. Зачем это нужно? Очень нужно! Так как теперь без проблем будет работать кросспостинг в Лайвжорнал, и пинг, а также многое другое!
На некоторых хостингах с пхп версий 5.2.5-5.2.6 возникала проблема вида
"Warning: xml_parse_into_struct() input conversion failed due to input error, bytes 0x98 0xD0 0xBD...."
Мы исправили ошибку в версии Feedmaster 1.4.6
Эта ошибка носила критический характер, потому мы выпустили обновление.
Долго не писал на блоге так как сильно загружены работой над новой версией 1.5.
Несколько слов по версии 1.5: реализовали 95% всего ТЗ, а это 48 доделок и модификаций, как мелких так и очень существенных. Например работа через XML-RPC.
Понимаю что многие уже устали ждать, но сырую версию выпускать нет смысла, потому "лучше позже - но лучше". Также могу смело сказать, что продукт переходит на новый качественный уровень в плане реализации.
П.С. В последнее время очень редко выхожу в ICQ, так как убедился, что это очень неэффективный способ работы. Понимаю что это создаёт некоторые неудобства пользователям, за что приношу свои извинения. Прошу по всем вопросам писать мне на почту mike(dog)wpdot.com - отвечаю очень оперативно. Новую версию высылаю по запросу на емейл.