Pull to refresh

Статистика LiveJournal Top1000

Reading time7 min
Views2.3K
Что такое блогосфера рунета сегодня. Можете со мной не согласиться, но на мой взгляд 80% того, что люди понимают под словом «блогосфера» — в рунете помещается в Живом Журнале. Да, Яндекс индексирует большое количество блоговых площадок, тут есть и LiveInternet и diary.ru и блоги на mail.ru тоже есть. И много чего еще. Но попробуйте припомнить, когда вы читали что-то интересное, достойное внимания на блоге из LiveInternet? А вообще что-нибудь на блогах mail.ru?

Известное дело, в Живом Журнале бал правят тысячники (а в последнее время уже десятитысячники).
Давайте посмотрим поближе, кто же они такие, топовые блогеры рунета?

На скорую руку я набросал робота, который ходил в профиль к тысяче блогеров, первых по критерию «в друзьях у», согласно рейтингу LiveJournal. Есть еще так называемый рейтинг авторитетности Яндекса, но давайте не будем сегодня о грустном.

Робот собирал личные данные и аккуратно складывал их в общую кучу. Код робота писался на C#, не буду утомлять излишними техническими подробностями, все довольно просто и прямолинейно – зашел на страничку, пропарсил ее на вхождение нужных переменных, сохранил, перешел к следующей.
И так 1000 раз.

Вот код функции, который получает на вход URL адрес страницы, и выдает на выходе HTML страницы в виде string. Теперь ее можно парсить обычными строковыми функциями, или пременить RegExp-ы.

  private string GetPageByURL(string strURL)
  {
    try
    {
      // used to build entire input
      StringBuilder sb = new StringBuilder();

      // used on each read operation
      byte[] buf = new byte[8192];

      // prepare the web page we will be asking for
      HttpWebRequest request = (HttpWebRequest)
        WebRequest.Create(strURL);

      // execute the request
      HttpWebResponse response = (HttpWebResponse)
        request.GetResponse();

      // we will read data via the response stream
      Stream resStream = response.GetResponseStream();

      string tempString = null;
      int count = 0;

      do
      {
        // fill the buffer with data
        count = resStream.Read(buf, 0, buf.Length);

        // make sure we read some data
        if (count != 0)
        {          
          // translate from bytes to ASCII text
          tempString = Encoding.GetEncoding("UTF-8").GetString(buf, 0, count);          

          // continue building the string
          sb.Append(tempString);
        }
      }
      while (count > 0); // any more data to read?

      return sb.ToString();
    }
    catch (Exception ex)
    {
      return "";
    }
  }


* This source code was highlighted with Source Code Highlighter.


Теперь в цикле ходим по страницам:
www.livejournal.com/ratings/users/?page=1

www.livejournal.com/ratings/users/?page=50

выкачиваем их с помощью вышеуказанной функции, потом бегаем по ним как по стрингам и собираем в ArrayList имена юзеров и их «в друзьях у».

Получаем список из 1000 человек. Потом проходим по нему в цикле, и заходим на страницы http://[имя пользователя].livejournal.com/profile и парсим их на вхождения остальных переменных.

После чего все пишем в базу, файл, или просто выплеваем на страницу, а оттуда копипастим ручками в Excel.

А для того, чтобы LiveJournal на моего робота не обижался – поставил существенную задержку между заходами, а то они очень уж строго предупреждают – будете ходить к нам своими роботами и не вытирать ноги – забаним. Поэтому весь процесс занял больше суток – написание робота, тестирование, работа, форматирование результатов. Согласен, на php можно было управиться кодом в полтора экрана и 2 часа на все про все, но мне .NET все-же привычнее.

Получилась вот такая табличка.


User Friend Of Friends City Region Country Journal Entries Total Comments Created on Last Updated Account Type
drugoi 69145 749 Москва   Norway 13,188 1,698,002 comments received, 66,105 comments posted 2002-03-02 1 hour ago Permanent Account
tema 68601 24 Южная Пальмира   Russian Federation 3,638 2,049,489 comments received, 6,880 comments posted 2001-09-04 4 hours ago Permanent Account
navalny 52840 10000 Москва Москва Russian Federation 2,306 957,191 comments received, 14,365 comments posted 2006-04-19 3 hours ago Paid Account
sergeydolya 51964 1991       870 243,261 comments received, 28,394 comments posted 2007-11-09 1 day ago Permanent Account
pesen_net 48525 202 Рига   Russian Federation 187 53,083 comments received, 10,084 comments posted 2007-04-22 6 weeks ago Paid Account
zyalt 35617 384 Москва Москва Russian Federation 1,619 246,360 comments received, 11,344 comments posted 2006-07-26 22 hours ago Paid Account
dolboeb 33820 1942 Moscow   Russian Federation 8,335 522,484 comments received, 38,400 comments posted 2001-02-06 58 minutes ago Permanent Account
belonika 33151 4604       781 208,475 comments received, 36,079 comments posted 2008-09-08 6 hours ago Paid Account
eprst2000 31454 11 Мск Москва Russian Federation 460 46,324 comments received, 3,724 comments posted 2002-08-22 1 week ago Paid Account
tebe_interesno 29831 612 Москва Москва Russian Federation 547 31,679 comments received, 8,823 comments posted 2007-06-25 10 weeks ago Paid Account
mi3ch 29827 738 Moscow Москва Russian Federation 6,930 374,776 comments received, 44,883 comments posted 2003-04-03 2 hours ago Permanent Account
shpilenok 29637 119   Брянская область Russian Federation 303 57,348 comments received, 4,461 comments posted 2009-01-11 6 hours ago Paid Account
zhgun 26081 29       188 22,301 comments received, 8,626 comments posted 2002-04-28 5 weeks ago Paid Account
mantrabox 25572 373     Russian Federation 2,915 60,720 comments received, 17,850 comments posted 2002-12-29 1 week ago Paid Account
olegtinkov 25291 11 Moscow   Russian Federation 638 137,481 comments received, 6,277 comments posted 2009-02-21 18 hours ago Paid Account
radulova 24682 595   Москва Russian Federation 8,622 874,385 comments received, 31,657 comments posted 2004-11-14 1 hour ago Paid Account
tanyant 24282 199       318 67,802 comments received, 6,868 comments posted 2007-12-14 2 weeks ago Plus Account
stillavin 23615 1703 Москва Москва Russian Federation 1,299 311,283 comments received, 18,247 comments posted 2006-08-23 3 days ago Paid Account
mzadornov 22568 80 Москва   Russian Federation 161 62,221 comments received, 136 comments posted 2009-09-15 3 days ago Plus Account
miumau 21495 47 Berlin   Germany 2,957 163,632 comments received, 13,520 comments posted 2002-02-27 1 hour ago Paid Account



Вся таблица (причем ни по высоте ни по ширине) в хабратопик не влезла, но полный файл с 1000 записей находится в Google Docs. Данные актуальны на сегодня 21 июля 2011 года, еще пару месяцев, а то и полгода они вряд-ли существенно изменятся.

Не смог удержаться построить парочку чартов и графиков, хотя каждый может использовать эти данные свободно и на свое усмотрение.

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

Например отсортировав записи по количеству друзей, обнаруживаем, что больше всего друзей не у [info]navalny, у которого их 10000 (хотя ограничение для простых смертных по ЖЖ – 5000 друзей), а у некого юзера [info]inexi, у которого их 20624.

Или например сортируем по количеству записей в блоге. Больше всего их наструячил конечно же [info]cypa, ну кто же еще? С 2003го года он сделал 43.390 записи.

А при обратной сортировке сразу же обнаруживаем любопытного бота – [info]blog_d_medvedev. Со дня создания в 2009м году этот псевдоюзер не сделал ни одной записи у себя в блоге, но его добавили в друзья 5816 человек. Явно какой-то робот, видимо просто игрушка в чужих руках. Наверняка не обошлось без мухлежа – френдомарафоны, накрутка рейтинга, подтасовки результатов голосования – все дела.

Продолжая сортировку мы узнаем, что самый старый блог, попавший в ТОП1000 был создан 31 марта 2000, а самый молодой – три месяца назад, в апреле этого года.

Так же в ТОП-е 139 Basic Account (Базовый), 560 Paid Account (Оплаченый), 15 Permanent Account (Постоянный), 284 Plus Account (Улучшенный) и один Early Adopter (а это кто это вообще, кстати? [info]billycorgan – что он делает в российском топе, если живет в США и пишет по-английски?).

Получается – не так уж и много оплаченных аккаунтов в первой 1000. Чуть больше половины всего лишь.




Или, например разбивка по странам:


Короче много можно придумать работы аналитикам, статистикам, разнообразным специалистам по продвижению чего бы то ни было и прочим любопытствующим бездельникам.

Сначала думал сделать данный сервис онлайновым и постоянно обновляющимся, но потом решил, что за ежедневные 1000 запросов к серверу ЖЖ (точнее даже больше) меня вместе с моим роботом по голове не погладят. Так что, ограничился единовременной статистикой.

Файл со статистикой приветствуются к распространению, никаких ограничивающих копирайтов на него не предусмотрено.

UPD: Буду рад, если подскажите, как можно позволить любому пользователю сортировать колонки в Google Docs, но не позволить ему менять результаты, т.е. искажать сами данные.
В любом случае, файл можно сохранить к себе на компьютер из меню File-Download As-Excel, и уже дома в Microsoft Office сортировать куда только вздумается.
Tags:
Hubs:
Total votes 9: ↑5 and ↓4+1
Comments8

Articles