Рейтинг городов на хабре

Распарсил людей хабры (те что указали город):

1. Москва _____________ 1613 человек (77.5% != 0) ___ 15138.1 карма
2. Санкт-Петербург _____ 713 человек (80.08% != 0) ___ 7483.4 карма
3. Новосибирск _______ 162 человек (76.54% != 0) ___ 1584.1 карма
4. Казань _____________ 77 человек (84.42% != 0) ___ 1454.5 карма
5. Челябинск _________ 89 человек (82.02% != 0) ___ 1435.4 карма
6. Екатеринбург ______ 135 человек (72.59% != 0) ___ 1220.3 карма
7. Нижний Новгород ___ 88 человек (84.09% != 0) ___ 1045.6 карма
8. Самара ____________ 76 человек (80.26% != 0) ___ 769 карма
9. Уфа _______________ 57 человек (71.93% != 0) ___ 727.4 карма
10. Омск ______________ 52 человек (84.62% != 0) ___ 724.4 карма
11. Пермь _____________ 61 человек (72.13% != 0) ___ 634.6 карма
12. Воронеж ___________ 63 человек (84.13% != 0) ___ 518.8 карма
13. Томск _____________ 55 человек (83.64% != 0) ___ 427.4 карма

Скрипт куда угодно. В корне папку cache. Loadurl грузит адрес один раз. Последующие запуски только считает.
<?php

function loadurl($url, $file, $over = false) {
	$file = $_SERVER['DOCUMENT_ROOT'].'/cache/'.$file;
	if(!is_file($file) || $over) {
		$data = file_get_contents($url);
		file_put_contents($file, $data);
	} else {
		$data = file_get_contents($file);
	}
	return $data;
}

$mode = 'country'; //city


$index = loadurl('http://habrahabr.ru/people/', 'habrahabrru-people.html');

preg_match_all('/href="\/people\/'.$mode.'\/([0-9]+)" title="([0-9]+) чел.">(.+?)<\/a><\/li>/im', $index, $mode_s);

foreach($mode_s[1] as $mode_index => $mode_id) {

	$page = loadurl('http://habrahabr.ru/people/'.$mode.'/'.$mode_id.'/', 'habrahabrru-people-'.$mode.'-'.$mode_id.'-page1.html');

	preg_match_all('/href="\/people\/'.$mode.'\/'.$mode_id.'\/page([0-9]+)\/"/im', $page, $lastpage);
	$lastpage = $lastpage[1][sizeof($lastpage[1]) - 1];
	
	$karma_sum = 0;
	
	//защита от загрузки большого количества страниц!!! (убрать но ожидать медленной загрузки)
	if($lastpage < 15) {
	
	for($p = 1; $p <= $lastpage; $p++) {
		$page = loadurl('http://habrahabr.ru/people/'.$mode.'/'.$mode_id.'/page'.$p.'/', 'habrahabrru-people-'.$mode.'-'.$mode_id.'-page'.$p.'.html');
		preg_match_all('/td class="userkarma">(.+?)<\/td>/im', $page, $karma);
		foreach($karma[1] as $ki_index => $ki) {
			$ki = str_replace(',', '.', $ki);
			if(!is_numeric($ki)) {
				$ki = substr($ki, 3, strlen($ki)) * -1;
			} else {
				$ki = $ki * 1;
			}
			$karma_sum += $ki;
	
		}
	}
	
	}
	
	echo $mode_s[3][$mode_index].' ___ '.$mode_s[2][$mode_index].' ___ '.$karma_sum.'<br />';

}

?>

13 комментариев

avatar
Вот по странам еще:

Латвия ___ 1226
США ___ 2364.1
Германия ___ 1377.6
Израиль ___ 1110.4
Узбекистан ___ 499.4
Эстония ___ 354
Великобритания ___ 899.8
Молдова ___ 456.9
Чехия ___ 983.2
Канада ___ 1187.5
Литва ___ 241.6
Азербайджан ___ 80.6
Австралия ___ 372.2
Армения ___ 194.4
Япония ___ 348.9
Франция ___ 172.4
avatar
  • eye-ru
  • 0
Спасибо, интересная стата
Казань и Челябинск прямо таки выделяются из общего фона
avatar
  • eye-ru
  • 0
А по странам можно стату — страна; количество человек; суммарная карма?
avatar
  • MpaK
  • 0
Шикарна :)))
еще бы список этих 57и уфимцев, а то я например там 2 раза есть :)
avatar
Ну вот тебе список)
habrahabr.ru/people/city/446088/
avatar
  • MpaK
  • 0
КЭП :) этот список я видел, но меня в нём 2 раза нет ;)
avatar
Ну, так как минимум в mpak999.habrahabr.ru/ ты не указал город)
Снова ваш К.О. :)
avatar
Отхабренный!!!
Кстати, забавная штука. Всем известно, что есть список тем, на которые хабраюзеры реагируют как на красную тряпку. Но когда сталкивается две таких темы в одном топике, то одна остается в тени второй. Например копирайт хабраюзера раздражает больше, чем вконтакт.
avatar
  • MpaK
  • 0
Вот видишь, КО :) меня в том списке-то нет :)
avatar
И я там есть :)
Правда, с точки зрения кармы имею большой минус за то, что называю нынешний Хабр рекламной площадкой :)
Логин, вообще-то, не тот, что на этом сайте (robert).
avatar
  • MpaK
  • 0
да, уж, Хабр уже не торт… Но почитать порой есть еще что, просто в потоке «популярности» приходиться долго разгребать среди хлама, пиара и детских соплей.
avatar
  • vadik
  • 0
avatar
[:]||||[:]
:)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.