Немного о парсинге vk

1)Определение пользователей, кому понравилось что-либо (конкретное видео, картинка, страница, фото, запись, аудиозапись…)
Без всякой авторизации заходим на http://vkontakte.ru/like.php?act=a_get_stats&al;=1&object;=video3224724_140557659 , где video3224724_140557659 замените на любой другой объект (запись на стене, фото итд.) и получаем примерно такое:

1632<!><!>0<!>2463<!>0<!><div class="header" onclick="showTabbedBox('like.php', {act: 'a_get_members', object: 'video3224724_140557659', wall: 1}, {cache: 1})"><div id="like_title_video3224724_140557659">Понравилось 3 людям</div></div>
<div class="wrap">
  <input type="hidden" id="like_real_count_video3224724_140557659" value="3" />
  <div class="content"><div class="hider"><table cellspacing="0" cellpadding="0" id="like_table_video3224724_140557659" class="like_stats" style="left: 0px"><tr><td><a title="Дмитрий Чуб" href="/id20501118" onclick="return nav.go(this, event)"><img src="http://cs10238.vkontakte.ru/u20501118/e_ec102195.jpg" /></a></td><td><a title="Анюта Одарченко" href="/a.n_ny" onclick="return nav.go(this, event)"><img src="http://cs11450.vkontakte.ru/u24526473/e_cd7f1237.jpg" /></a></td><td><a title="Арсения Головлева" href="/crazyfeyaa" onclick="return nav.go(this, event)"><img src="http://cs10733.vkontakte.ru/u39525778/e_f1f22200.jpg" /></a></td></tr></table></div></div>
  
</div><!>var count = intval(ge('like_real_count_video3224724_140557659').value);
if (count) {
  addClass(tip.container, '');
  if (!tip.inited) {
    tip.onClean = function() {
      tip.inited = false;
      if (tip.over) removeEvent(tip.container, 'mouseover', tip.over);
      if (tip.out) removeEvent(tip.container, 'mouseout', tip.out);
    }
    if (tip.over) addEvent(tip.container, 'mouseover', tip.over);
    if (tip.out) addEvent(tip.container, 'mouseout', tip.out);
    tip.inited = true;
  }
}
return count > 0;

выбрать имена и страницы регуляркой не составит труда…

2)Парсинг «бесконечных» страниц.
На многих страницах информация подгружается по мере скроллинга вниз. Рассмотрим пример сбора информации из раздела Новости-Популярное.
После авторизации отправляем post запрос al=1∂=1§ion;=popular на страницу /feed и получаем ajax-овый ответ, в котором есть 8 верхних статусов и json массив. В json мы посмотрим только на «all_shown»:false (если это есть, значит мы еще не дошли до последнего статуса) и на «from», в котором цифры, которые нам нужны для получения следующей порции.
Отправляем такой же запрос, только добавляем к нему from=наши_цифры и получаем новые записи… это все продолжается пока не дойдем до конца.

// массив ВСЕХ постов со стены
function get_all_wall_posts($hash,$limit=0)
{
    $parse = array();
    //ф-я get_page принимает параметры $url,$cookieHash,$post , ее делайте сами
    $feed = get_page('http://vkontakte.ru/feed', $hash,'al=1&part=1§ion=popular'); //получаем ajax данные
    //пока не дойдем до конца
    while( preg_match('|"from":"([^"]*)"|', $feed ,$next) && preg_match('|"all_shown":false|', $feed))
    {
        $parse += parse_wall($feed); //получаем массив постов
        if($limit) //если передан параметр ограничивающий колич. записей, проверяем лимит
            if(count($parse) >= $limit)
                break;
        //получаем новую порцию и идем дальше по циклу        
        $feed = get_page('http://vkontakte.ru/feed', $hash,'al=1&part=1§ion=popular&from=' . $next[1]);
    }
    //возвращаем массив
    return $parse;
}

// массив всех переданных за один раз постов со стены ($id=>$text)
function parse_wall($str)
{
    $returnArray = array();
    preg_match_all('|<div class="wall_post_text">([^<]*)</div></div>\s*<div class="like_wrap fl_r" onmouseover="wall.likeOver\(\'([^\']*)\'\)" |', $str, $cut);
    if(count($cut[2]))
        foreach($cut[2] as $i => $id)
            $returnArray[$id] = $cut[1][$i];
    return $returnArray;
}

Собирать информацию, статистику и контент из вконтакта не сложно… уже немало сайтов живут контентом из vk =)