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

09 Nov 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 говорит, что у него нет времени и всё в таком духе. И база у него не своя…

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

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

Name (required)

Mail (will not be published) (required)

Сайт (OpenID включен)

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



налоговые арбитражные споры
Дизайн сайта
DIZ Balance
  Яндекс.Метрика
 PR&CY Checker
Рейтинг блогов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302
303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422
423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483