Как получить больше 100 постов из сообщества через vk api?
Никак не получается получить больше 100 постов (а именно 2000) из группы в вк из-за ограничения метода. Уже хотела просто 20 раз одну и ту же функцию выполнить с offset=100, а потом мёржить, но это слишком костыльно. Цикл никак не получается написать, execute тоже. Вот мой код, который собирает 100 постов:
group_id = '-175798749'
y = requests.get('https://api.vk.com/method/wall.get', params={
'access_token':token,
'v':5.131,
'owner_id': group_id,
'offset': 0,
'count': 2000}).json()
data = y
json_str = json.dumps(data)
resp = json.loads(json_str)
print(resp)
print(resp['response'])
data_items = str(resp['response'])
df = pd.DataFrame(y['response']['items'])
Ответы (1 шт):
К сожалению, VK не позволит получить больше, чем 100 через один запрос VK API. Но, для решения данной задачи, существуют VKScript (aka execute). Через него можно делать до 25 запросов к API в рамках одного запроса. То есть это не будет затрагивать лимиты запросов токена.
Вот так можно реализовать хранимую процедуру для решения вашей задачи:
var responses = [],
i = 0;
while (i < 20) {
responses = responses + API.wall.get({
"owner_id": Args.owner_id,
"offset": i * 100,
"count": 100
}).items;
i = i + 1;
}
return responses;
И, тогда, код на python будет выглядеть так:
code = """
var responses = [],
i = 0;
while (i < 20) {
responses = responses + API.wall.get({
"owner_id": Args.owner_id,
"offset": i * 100,
"count": 100
}).items;
i = i + 1;
}
return responses;
"""
group_id = '-175798749'
y = requests.get('https://api.vk.com/method/execute', params={
'access_token': token,
'code': code
'v': 5.131,
'owner_id': group_id}).json()
...