Что такое блогосфера рунета сегодня. Можете со мной не согласиться, но на мой взгляд 80% того, что люди понимают под словом «блогосфера» — в рунете помещается в Живом Журнале. Да, Яндекс индексирует большое количество блоговых площадок, тут есть и LiveInternet и diary.ru и блоги на mail.ru тоже есть. И много чего еще. Но попробуйте припомнить, когда вы читали что-то интересное, достойное внимания на блоге из LiveInternet? А вообще что-нибудь на блогах mail.ru?
Известное дело, в Живом Журнале бал правят тысячники (а в последнее время уже десятитысячники).
Давайте посмотрим поближе, кто же они такие, топовые блогеры рунета?
На скорую руку я набросал робота, который ходил в профиль к тысяче блогеров, первых по критерию «в друзьях у», согласно рейтингу LiveJournal. Есть еще так называемый рейтинг авторитетности Яндекса, но давайте не будем сегодня о грустном.
Робот собирал личные данные и аккуратно складывал их в общую кучу. Код робота писался на C#, не буду утомлять излишними техническими подробностями, все довольно просто и прямолинейно – зашел на страничку, пропарсил ее на вхождение нужных переменных, сохранил, перешел к следующей.
И так 1000 раз.
Вот код функции, который получает на вход URL адрес страницы, и выдает на выходе HTML страницы в виде string. Теперь ее можно парсить обычными строковыми функциями, или пременить RegExp-ы.
Теперь в цикле ходим по страницам:
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 все-же привычнее.
Получилась вот такая табличка.
…
Вся таблица (причем ни по высоте ни по ширине) в хабратопик не влезла, но полный файл с 1000 записей находится в Google Docs. Данные актуальны на сегодня 21 июля 2011 года, еще пару месяцев, а то и полгода они вряд-ли существенно изменятся.
Не смог удержаться построить парочку чартов и графиков, хотя каждый может использовать эти данные свободно и на свое усмотрение.
Даже при обычной сортировке колонок вверх и вниз, можно наблюдать интересные детали.
Например отсортировав записи по количеству друзей, обнаруживаем, что больше всего друзей не у navalny, у которого их 10000 (хотя ограничение для простых смертных по ЖЖ – 5000 друзей), а у некого юзера inexi, у которого их 20624.
Или например сортируем по количеству записей в блоге. Больше всего их наструячил конечно же cypa, ну кто же еще? С 2003го года он сделал 43.390 записи.
А при обратной сортировке сразу же обнаруживаем любопытного бота – blog_d_medvedev. Со дня создания в 2009м году этот псевдоюзер не сделал ни одной записи у себя в блоге, но его добавили в друзья 5816 человек. Явно какой-то робот, видимо просто игрушка в чужих руках. Наверняка не обошлось без мухлежа – френдомарафоны, накрутка рейтинга, подтасовки результатов голосования – все дела.
Продолжая сортировку мы узнаем, что самый старый блог, попавший в ТОП1000 был создан 31 марта 2000, а самый молодой – три месяца назад, в апреле этого года.
Так же в ТОП-е 139 Basic Account (Базовый), 560 Paid Account (Оплаченый), 15 Permanent Account (Постоянный), 284 Plus Account (Улучшенный) и один Early Adopter (а это кто это вообще, кстати? billycorgan – что он делает в российском топе, если живет в США и пишет по-английски?).
Получается – не так уж и много оплаченных аккаунтов в первой 1000. Чуть больше половины всего лишь.
Или, например разбивка по странам:
Короче много можно придумать работы аналитикам, статистикам, разнообразным специалистам по продвижению чего бы то ни было и прочим любопытствующим бездельникам.
Сначала думал сделать данный сервис онлайновым и постоянно обновляющимся, но потом решил, что за ежедневные 1000 запросов к серверу ЖЖ (точнее даже больше) меня вместе с моим роботом по голове не погладят. Так что, ограничился единовременной статистикой.
Файл со статистикой приветствуются к распространению, никаких ограничивающих копирайтов на него не предусмотрено.
UPD: Буду рад, если подскажите, как можно позволить любому пользователю сортировать колонки в Google Docs, но не позволить ему менять результаты, т.е. искажать сами данные.
В любом случае, файл можно сохранить к себе на компьютер из меню File-Download As-Excel, и уже дома в Microsoft Office сортировать куда только вздумается.
Известное дело, в Живом Журнале бал правят тысячники (а в последнее время уже десятитысячники).
Давайте посмотрим поближе, кто же они такие, топовые блогеры рунета?
На скорую руку я набросал робота, который ходил в профиль к тысяче блогеров, первых по критерию «в друзьях у», согласно рейтингу 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 года, еще пару месяцев, а то и полгода они вряд-ли существенно изменятся.
Не смог удержаться построить парочку чартов и графиков, хотя каждый может использовать эти данные свободно и на свое усмотрение.
Даже при обычной сортировке колонок вверх и вниз, можно наблюдать интересные детали.
Например отсортировав записи по количеству друзей, обнаруживаем, что больше всего друзей не у navalny, у которого их 10000 (хотя ограничение для простых смертных по ЖЖ – 5000 друзей), а у некого юзера inexi, у которого их 20624.
Или например сортируем по количеству записей в блоге. Больше всего их наструячил конечно же cypa, ну кто же еще? С 2003го года он сделал 43.390 записи.
А при обратной сортировке сразу же обнаруживаем любопытного бота – blog_d_medvedev. Со дня создания в 2009м году этот псевдоюзер не сделал ни одной записи у себя в блоге, но его добавили в друзья 5816 человек. Явно какой-то робот, видимо просто игрушка в чужих руках. Наверняка не обошлось без мухлежа – френдомарафоны, накрутка рейтинга, подтасовки результатов голосования – все дела.
Продолжая сортировку мы узнаем, что самый старый блог, попавший в ТОП1000 был создан 31 марта 2000, а самый молодой – три месяца назад, в апреле этого года.
Так же в ТОП-е 139 Basic Account (Базовый), 560 Paid Account (Оплаченый), 15 Permanent Account (Постоянный), 284 Plus Account (Улучшенный) и один Early Adopter (а это кто это вообще, кстати? billycorgan – что он делает в российском топе, если живет в США и пишет по-английски?).
Получается – не так уж и много оплаченных аккаунтов в первой 1000. Чуть больше половины всего лишь.
Или, например разбивка по странам:
Короче много можно придумать работы аналитикам, статистикам, разнообразным специалистам по продвижению чего бы то ни было и прочим любопытствующим бездельникам.
Сначала думал сделать данный сервис онлайновым и постоянно обновляющимся, но потом решил, что за ежедневные 1000 запросов к серверу ЖЖ (точнее даже больше) меня вместе с моим роботом по голове не погладят. Так что, ограничился единовременной статистикой.
Файл со статистикой приветствуются к распространению, никаких ограничивающих копирайтов на него не предусмотрено.
UPD: Буду рад, если подскажите, как можно позволить любому пользователю сортировать колонки в Google Docs, но не позволить ему менять результаты, т.е. искажать сами данные.
В любом случае, файл можно сохранить к себе на компьютер из меню File-Download As-Excel, и уже дома в Microsoft Office сортировать куда только вздумается.