Как быстро спарсить группы 10 000 пользователей ВКонтакте?

codeby

Client
Регистрация
25.08.2014
Сообщения
394
Благодарностей
53
Баллы
28
Друзья, такой вопрос.

Мне нужно спарсить группы и сообщества около 10 000 пользоваталей и засунуть в Эксель файл.

В целом задачу решил так. Прохожусь последовательно циклом по списку ID пользователей, достаю инфу о группах через groups.get и инфу фигачу в таблицу.

Вроде работает, но парсинг занимает 2-3 часа. В то же время через Церебро похожая штука делается за 2-3 минуты. Я бы не заморачивался и пользовался Церебро, но мне нужно более подробная инфа, че то, что даёт Церебро, плюс нужно инфу постоянно обновлять и держать свежатинкой.

Думал сделать через execute, но как оформить не знаю. Дело в том, что groups.get в расширенном формате отдаёт только 1000 результатов и надо через offset проходить некоторых пользователей по несколько раз.

Может кто подскажет логику, как этот процесс ускорить?
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
Насколько я понимаю, Церебро работает через собственно ВК-приложение, а в этом плане у ВК простые правила: чем больше людей установили себе приложение, тем шире лимиты на запросы. Грубо говоря, поскольку Церебро пользуется толпа народу, то их приложению позволяется кошмарить ВК почти без ограничений.
Ты можешь воспользоваться аналогичными льготами, если изобразишь толпу людей. Тебе нужна цепочка: элитный_прокси+ВК_акк+токен, и таких комплектов нужно N штук.

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

codeby

Client
Регистрация
25.08.2014
Сообщения
394
Благодарностей
53
Баллы
28
Насколько я понимаю, Церебро работает через собственно ВК-приложение, а в этом плане у ВК простые правила: чем больше людей установили себе приложение, тем шире лимиты на запросы. Грубо говоря, поскольку Церебро пользуется толпа народу, то их приложению позволяется кошмарить ВК почти без ограничений.
Ты можешь воспользоваться аналогичными льготами, если изобразишь толпу людей. Тебе нужна цепочка: элитный_прокси+ВК_акк+токен, и таких комплектов нужно N штук.

Впрочем, инфу о ново-вступивших в группу можно выкачивать и без этих диких объёмов, просто используй сортировку по дате вступления.
Так смотри
Мне не инфа о нововступивших надо

Мне надо смотреть по каждому юзеру динамику вступления/выхода в разные сообщества

Поэтому я делаю парсинг, сохраняю его, а потом делаю снова и сравниваю что поменялось.

То что Церебро имеет лимити больше - это ясно. Но я токен например получают через приложение Андроида (его ID известен и оно раздаёт токен через строку браузера). У него тоже по идее лимиты нехилые.
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
всё равно, имеются счётчики на однотипные запросы с одного IP, их не обойти без дополнительных акков и проксей
 

codeby

Client
Регистрация
25.08.2014
Сообщения
394
Благодарностей
53
Баллы
28
всё равно, имеются счётчики на однотипные запросы с одного IP, их не обойти без дополнительных акков и проксей
Ну ладно если бы там в 3-4 раза быстрее. Но тут скорость конкретно выше выходит. Дело скорее в алгоритме.
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

execute
 

codeby

Client
Регистрация
25.08.2014
Сообщения
394
Благодарностей
53
Баллы
28

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
Насколько я понимаю, Церебро работает через собственно ВК-приложение, а в этом плане у ВК простые правила: чем больше людей установили себе приложение, тем шире лимиты на запросы. Грубо говоря, поскольку Церебро пользуется толпа народу, то их приложению позволяется кошмарить ВК почти без ограничений.
Без каких ещё ограничений?
У Церебро таргет 22 763 участника у приложения на текущий момент, это всего на 3 запроса в секунду больше, чем у только что созданного приложения.
Если приложение установило меньше 10 000 человек, то можно совершать 5 запросов в секунду, до 100 000 – 8 запросов, до 1 000 000 – 20 запросов, больше 1 млн. – 35 запросов в секунду.
Ты можешь воспользоваться аналогичными льготами, если изобразишь толпу людей. Тебе нужна цепочка: элитный_прокси+ВК_акк+токен, и таких комплектов нужно N штук.
Бессмысленная затея в данном контексте.
Друзья, такой вопрос.

Мне нужно спарсить группы и сообщества около 10 000 пользоваталей и засунуть в Эксель файл.

В целом задачу решил так. Прохожусь последовательно циклом по списку ID пользователей, достаю инфу о группах через groups.get и инфу фигачу в таблицу.

Вроде работает, но парсинг занимает 2-3 часа. В то же время через Церебро похожая штука делается за 2-3 минуты. Я бы не заморачивался и пользовался Церебро, но мне нужно более подробная инфа, че то, что даёт Церебро, плюс нужно инфу постоянно обновлять и держать свежатинкой.

Думал сделать через execute, но как оформить не знаю. Дело в том, что groups.get в расширенном формате отдаёт только 1000 результатов и надо через offset проходить некоторых пользователей по несколько раз.

Может кто подскажет логику, как этот процесс ускорить?
Для метода groups.get не требуется токен, поэтому просто переключайтесь в многопоточный режим. Потоков 40 дадут ощутимый прирост а-ля Церебро.
 

codeby

Client
Регистрация
25.08.2014
Сообщения
394
Благодарностей
53
Баллы
28
Для метода groups.get не требуется токен, поэтому просто переключайтесь в многопоточный режим. Потоков 40 дадут ощутимый прирост а-ля Церебро.
К сожалению требуется.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
Думал сделать через execute, но как оформить не знаю.
Заходите в мои приложения (https://vk.com/apps?act=manage) и редактируете существующее, либо создаете новое.
Далее переходите в Хранимые процедуры, создаете новую процедуру (назовем её, например, groupParse) и вставляете туда этот код ниже:
Код:
var res = [];
var user_num = 0;
var list_user = [Args.user1,Args.user2,Args.user3,Args.user4,Args.user5];

while (user_num < 5) {
var i = 0;
var count = 0;
while (i <= count){
var listgroup=API.groups.get({"user_id":list_user[user_num],"count":1000,"offset":i});
count=listgroup.count;
res = res + [listgroup];
i=i+1000;
}
user_num = user_num + 1;
}
return res;
Пользователи будут передаваться в Args (сделал 5, можно увеличить до 25).
Чтобы обратиться к данному методу, необходимо выполнить GET запрос:
Код:
https://api.vk.com/method/execute.groupParse?user1={-Variable.id1-}&user2={-Variable.id2-}&user3={-Variable.id3-}&user4={-Variable.id4-}&user5={-Variable.id5-}&access_token={-Variable.access_token-}
 
  • Спасибо
Реакции: NoN и codeby

codeby

Client
Регистрация
25.08.2014
Сообщения
394
Благодарностей
53
Баллы
28
Заходите в мои приложения (https://vk.com/apps?act=manage) и редактируете существующее, либо создаете новое.
Далее переходите в Хранимые процедуры, создаете новую процедуру (назовем её, например, groupParse) и вставляете туда этот код ниже:
Код:
var res = [];
var user_num = 0;
var list_user = [Args.user1,Args.user2,Args.user3,Args.user4,Args.user5];

while (user_num < 5) {
var i = 0;
var count = 0;
while (i <= count){
var listgroup=API.groups.get({"user_id":list_user[user_num],"count":1000,"offset":i});
count=listgroup.count;
res = res + [listgroup];
i=i+1000;
}
user_num = user_num + 1;
}
return res;
Пользователи будут передаваться в Args (сделал 5, можно увеличить до 25).
Чтобы обратиться к данному методу, необходимо выполнить GET запрос:
Код:
https://api.vk.com/method/execute.groupParse?user1={-Variable.id1-}&user2={-Variable.id2-}&user3={-Variable.id3-}&user4={-Variable.id4-}&user5={-Variable.id5-}&access_token={-Variable.access_token-}

Благодарю. Я тоже так думал. Но сли у нас в list_user будет 25 пользователей, а затем ещё 2-3 offset, то мы можем выйти за пределы 25 вызовов API в запросе. Или я не так что-то считаю?
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
Благодарю. Я тоже так думал. Но сли у нас в list_user будет 25 пользователей, а затем ещё 2-3 offset, то мы можем выйти за пределы 25 вызовов API в запросе. Или я не так что-то считаю?
Да, извиняюсь, забыл про этот момент.
Поставьте в таком случае ~12 пользователей. Не так много встречается людей с 2к+ сообществ.
 
  • Спасибо
Реакции: NoN и codeby

codeby

Client
Регистрация
25.08.2014
Сообщения
394
Благодарностей
53
Баллы
28
Окей. Я пока не совсем понимаю :-) Сегодня затестирую. Посмотрим как будет.
 

Lite

Client
Регистрация
17.10.2013
Сообщения
283
Благодарностей
89
Баллы
28
Для метода groups.get не требуется токен, поэтому просто переключайтесь в многопоточный режим. Потоков 40 дадут ощутимый прирост а-ля Церебро.
Токен требуется, не нужны особые права (scope).
 
  • Спасибо
Реакции: ibred и codeby

NoN

Пользователь
Регистрация
04.01.2015
Сообщения
183
Благодарностей
22
Баллы
18
@ibred Можете пожалкйста объяснить как получить access_token ?
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
  • Спасибо
Реакции: NoN

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)