@Msim

Как vk ведет себя при парсинге?

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

UPD реалезовал функцию выбора групп и собрание в txt файл всех пользователей. Код не очень , не кричите , но зато рабочий
<?php
error_reporting(0);
$handle = fopen("file.txt", "w");


if(filter_has_var(INPUT_POST, 'tarea')){
    $_POST['tarea'] = explode("\n", $_POST['tarea']);


    for ($i=0; $i < count($_POST['tarea']) ; $i++) {
        if(!$_POST['tarea'][$i] == ""){
            $club = strrpos($_POST['tarea'][$i],"m/club");
            if( $club !== false){
                $res[] = substr($_POST['tarea'][$i],$club+6);
            } else {
                $pos = strrpos($_POST['tarea'][$i],"m/")+2;
                $res[] = substr($_POST['tarea'][$i],$pos);
            }


        }

    }


    function getSslPage($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_REFERER, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }

    function check($value, $handle) {
        fwrite($handle, "--------------------------------- ");
        $id_group = trim($value);
        $url = "http://api.vkontakte.ru/method/groups.getMembers?group_id={$id_group}&count=0&offset=0";
        $wall = json_decode(getSslPage($url),true);
        fwrite($handle, "$id_group\n");
            $count = $wall['response']['count'];
        fwrite($handle, " $count\n ");
            if($count > 1000) {

                foreach (range(0,$count, 50 ) as $number) {

                    $offset = "&offset=".$number;
                    $url = checkUrl($url = "http://api.vkontakte.ru/method/groups.getMembers?group_id={$id_group}&count=50&offset=0", $offset);
                    $wall = json_decode(getSslPage($url),true);


                    foreach ($wall['response']['users'] as $vk_ac) {


                        fwrite($handle, "{$vk_ac}\n");
                    }

                }
            }

    }

    function checkUrl($url, $offset){
        $pos = strrpos($url,"&offset=");
        $newurl = substr_replace($url,$offset,$pos);
        return $newurl;
    }

    foreach ($res as $value) {

        check($value,$handle);
    }

    fclose($handle);
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename('file.txt'));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize('file.txt'));
    readfile('file.txt');
    exit;
}


?>
<!DOCTYPE html>
<html>
<head>
    <title>Парсинг пользователей вк</title>
</head>

<body>

<form action="" method="post" >

    <textarea name="tarea" id="tarea" cols="30" rows="10"></textarea>
    <input type="submit" value="ok" >

</form>


</body>
</html>
  • Вопрос задан
  • 1926 просмотров
Решения вопроса 1
@entermix
vk.com/dev/groups.getMembers

Возвращает список участников сообщества.
Это открытый метод, не требующий access_token.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы