Рейтинг популярных записей: что там в API?

09 Ноя 2009

simplepieВесть о скором закрытии Рейтинга популярных записей в сервисе Яндекс.Поиск по блогам вызвала у многих интерес к API, который Яндекс обещал сохранить. Уже появилось несколько новых рейтингов на основе данных этого API.

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

Итак, собственно, как воспользоваться данными API рейтинга? Простейший вариант — использовать класс SimplePie. Но у нашего фида есть особенности:

1. Он за каким-то чёртом поделен на страницы, и это не лечится.
2. Часть данных передаётся в расширенном формате, непонятном стандартными RSS-классам.

Первую «особенность» можно обойти, последовательно запрашивая все страницы фида, а для обхода второй для класса придётся писать расширение. Впрочем, это довольно просто — есть инструкция по расширению SimplePie (на английском языке).

Итак, собираем скрипт. Подключаем SimplePie и поочерёдно запрашиваем страниц 20 фида. Пока это просто эксперимент, кеширование можно оставить на файловом уровне класса, но в действующем сервисе уже, конечно, понадобится база данных. На выходе получаем много-много ссылок на записи в блогах. Если присмотреться к ним, то можно сделать некоторые выводы:

— Попасть в этот «топ» довольно просто — две-три ссылки со своих же блогов на других платформах обеспечивают пусть и не высокую, но всё же позицию. Лишь бы блоги были не новые.

— Большое число ссылок на сам блог или сообщество очень помогает. Например, почти все посты сообщества ru_mac попадают в топ за счёт этого.

— Намного больше шансов попасть в рейтинг у блогов на платформе LiveJournal.com. Отдельностоящих блогов там почти нет.

А теперь к досадному моменту: в фиде напрочь отсутствует какая-либо категоризация. Даже банальные теги из ЖЖ в фид не транслируются, что делает весьма затруднительным создание каких-либо тематических рейтингов на основе этого API. Я попробовал набросать некий алгоритм, выдающий записи на околокомпьютерную тематику, но эта идея потерпела фиаско — ни ручной отбор блогов, ни поиск ключевых слов в заголовках не дают нужного эффекта.

Посмотреть, что у меня получилось можно тут.

Поэтому я обращаюсь к читателям с просьбой предложить идею алгоритма, который выявил бы из рейтинга все записи наших коллег — IT-блогеров.

Жилинский Владимир.






 

nblxa     .

Написано 9 ноября 2009 года в 12:17


А я не поленился, написал свой фид-итер на голом PHP+cURL+DOM+XPath+MySQL. Всего пара часов мучений и вот уже данные собираются как по часам.

 

Жилинcкий Владимир     .

Написано 9 ноября 2009 года в 12:19


Да собрать же не проблема, а дальше-то что? Систематизация на имеющихся данных невозможна – если только вытягивать весь контент по ссылке. А это нагрузка для Яндекса :)

 

nblxa     .

Написано 9 ноября 2009 года в 12:38


Это нагрузка не для яндекса, а для блогохостингов. Ну, например, Livejournal.com в своих законах робототехники указывает, что:
– бот не может быть многопоточным;
– бот не может совершать более 5 соединений в секунду;
– у бота должен быть подписанный юзерагент.

У меня за прошедшие сутки сейчас в БД около 1100 сообщений с livejournal.com, где links24weight > 0, если обрабатывать по 5 штук в секунду (на идеальном сервере в вакууме), то выйдет примерно 4 минуты. Что, в принципе, не особо напряжно при обновлении рейтинга, скажем, раз в полчаса.

 

Жилинcкий Владимир     .

Написано 9 ноября 2009 года в 12:43


А какие данные ты с блогов забираешь?

 

nblxa     .

Написано 9 ноября 2009 года в 12:55


Пока что никакие: не дошел до этого. Буду курить формат их rss и думать, что б из этого сделать.

Думаю, если тебе нужны тематические записи, то проще всего составить список ключевых слов, которые надо искать в заголовке, тексте и метках. Плюс, для поиска тематических записей в блогах можно вопользоваться API блогопоиска того же яндекса.

Либо как другой вариант – составить не список технических терминов, а именно список блогов, посвященных тематике IT.

 

Жилинcкий Владимир     .

Написано 9 ноября 2009 года в 12:58


Посмотри заголовки – там чушь, нету там ключевых слов. Отметаем такой алгоритм.

Посмотри блоги: даже айтишники вчера написали про этого мента и именно с этим они в топе. То есть тоже не наш вариант.

Думаем дальше =) Может теги вытаскивать и по ним ориентироваться?

 

nblxa     .

Написано 9 ноября 2009 года в 13:06


Может, и по тегам, но кому-то может быть лень их прописывать, например. Думаю, список слов IT-тематики составить несложно: они все довольно специфичные, и немаленькая часть IT-поcтов будет содержать названия брендов. Еще можно вытаскивать ссылки из поста и комментов и по ним определять степень айтишности поста.

А вообще, прикольно получается: закрытием своего топа и раздачей API яндекс сделал подлянку блогохостингам :) — теперь их будут атаковать еще большие орды ботов.

 

Жилинcкий Владимир     .

Написано 9 ноября 2009 года в 13:14


Надо написать “Открытое письмо Яндексу”, как сейчас модно. Пусть в фид добавят теги и текст поста, они ведь могут.

О! Кстати! А ведь можно эти данные не с блогохостингов тянуть, а из кеша Яши.

 

Sam     .

Написано 9 ноября 2009 года в 13:42


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

 

nblxa     .

Написано 9 ноября 2009 года в 14:00


Да чем ждать от моря погоды, проще самому все сделать. А то получается “Давайте попросим Яндекс, чтобы он сам за нас все разработал, а мы бы просто XSL- и CSS-шаблоны прикрутили”.

У меня вопрос к публике насчет многостраничности. Я ничуть не пытаюсь как-то защитить яндекс, а просто представляю, как бы я сделал такое сам. Как контролировать нагрузку? Я не знаю заранее, сколько всего записей вернет API: в одно время это 3000, в другое 7000, может быть, бывают и другие значения, я не следил. Предполагается, что это высоконагруженный API с низким latency: пусть даже он и отдают статику, но, повторюсь, контролировать нагрузку как-то надо, чтобы гарантировать стабильный уровень обслуживания для всех клиентов. Обыкновенные RSS тоже не отдают все записи сразу, будь они хоть трижды загзиплены.

Это мои соображения. Может быть, на самом деле я перегибаю палку, и для гигатна-яндекса это капля в море. Но в любом случае, лично мне не очень сложно было написать скрипт, “съедающий” все страницы последовательно.

 

nblxa     .

Написано 9 ноября 2009 года в 14:02


…а можно, кстати, и параллельно! Этакий хак ;-)

 

Жилинcкий Владимир     .

Написано 10 ноября 2009 года в 10:57


Смотри, что я нашёл:

АДЫН: Семантическое зеркало – есть интерфейс, тока за деньги.

ДЫВА: Istio – нет интерфейса, работает хуже.

Оба работают по одному принципу – текст страницы обезвоживается и сравнивается со словарём, в котором слова разделены на тематики.

Где бы спионерить такой словарик…

 

medar     .

Написано 10 ноября 2009 года в 11:13


nblxa, я бы не заморачивался с защитой Яндекса. У меня twittertrends.ru сосёт твиттер в 400 потоков без каких-либо напрягов последнего (ip, правда, занесены в твиттеровский whitelist). Подобных сервисов, работающих с API твиттера – масса, и ничего, жив пока курилка. А у Яндекса, думаю, мощностей поболе будет, или по крайней мере сравнимо с твиттером.

Тем более что у блог-апи сейчас где-то 70 страниц в среднем отдается и их вполне можно сосать в однопотоке, там инфа медленно обновляется.

// Посмотри блоги: даже айтишники вчера написали про этого мента и именно с этим они в топе. То есть тоже не наш вариант.
Так ты сейчас сделал фильтр по юзерам или все-таки по тайтлам ? Как ты сейчас айтишников определяешь ?

Собирать контент с тэгами не проблема – у меня однопотока вполне хватает обходить топ 1000 , правда пока только ЖЖ, с другими пока не заморачивался.
Так что фильтрация по словам в посте – имхо, лучшее решение. Правда, я пока не представляю как и где получить все русские слова IT-тематики.. Хабр отпарсить, что ли :)

 

Жилинcкий Владимир     .

Написано 10 ноября 2009 года в 13:55


Сейчас по юзерам – видно, что получается чёпопало. Как ты забираешь контент – из RSS-ленты ЖЖ-юзера сравнивая URI\заголовок?

Слова могут классифицировать два сервиса из предыдущего моего комментария, но бесплатно не хотят :<

 

medar     .

Написано 10 ноября 2009 года в 14:46


Да, контент забираю именно так. Вот тут оно сейчас висит, если интересно, периодически может падать, так как я там наживую копаюсь: currentnews.ru

Ашмановский можно было бы отыметь через прокси, но я сейчас попробовал туда попихать разные ЖЖ – как-то не впечатлили меня результаты. Имхо, лучше составлять свои ограниченные категории (политика, IT, кино-тв и т.д.) из набора слов, но учитывая русскую морфологию – это лютый пипец.

 

nblxa     .

Написано 10 ноября 2009 года в 14:53


Проблема морфологии относительно легко решается стеммерами с готовыми словарями: кто ищет, тот всегда найдет.

Ашмановский сервис и тот другой мне как-то не особо понравились: уж очень общая у них направленность, отсюда и неадекватные ответы. Плюс, они грешат тем, что не отделают содержательную часть от навигационной и оформления. Юзернеймы, слова типа reply, post, comments, lj искажают результат. Плюс, количество неадеквата в комментах может сильно превышать собственно количество полезной информации в самом посте, и здесь тоже желательно уметь отделять мух от котлет.

 

Жилинcкий Владимир     .

Написано 10 ноября 2009 года в 15:00


Отправил письма в Ашмановскую контору и в Истио. Посмотрим чего будет, ибо самому составлять весовой словарь – проще сразу об стенку.

 

Жилинcкий Владимир     .

Написано 11 ноября 2009 года в 08:00


Семантическое зеркало стоит от 6000 рублей в месяц (не более 10 000 запросов в день).

Владелец Istio говорит, что у него нет времени и всё в таком духе. И база у него не своя…

Ищите ещё автоклассификаторы, господа.

Оставить комментарий:

You must be logged in to post a comment.

© 2007-2010 Блог интернет-разработчика, автор — Zhilinsky.ru.
При использовании информации ссылка на источник обязательна.