В тех поддержку часто обращаются с таким вопросом. Если попробовать парсить через сайт (традиционным способом), то увидим, что есть ограничение - максимум 1000 пользователей, и для больших групп данный способ не подходит. Но ВК позволяют получить всех пользователей группы через АПИ без каких-либо ограничений и авторизации. Для этого есть метод groups.getMembers. Поэтому используя его можно сделать простой пресет, который выведет весь список пользователей. Спойлер: Пресет Код: eyJwcmVzZXQiOiJWSyBwYXJzZSB1c2VycyBmcm9tIGdyb3VwIiwidmFsdWUiOnsi cHJlc2V0IjoiVksgcGFyc2UgdXNlcnMgZnJvbSBncm91cCIsInBhcnNlcnMiOltb Ik5ldDo6SFRUUCIsImRlZmF1bHQiLHsidHlwZSI6Im92ZXJyaWRlIiwiaWQiOiJn b29kQ29kZSIsInZhbHVlIjpbMjAwXX1dXSwicmVzdWx0c0Zvcm1hdCI6IlslIGxp bWl0ID0gMTA7ICMgMSBcdTA0NDFcdTA0NDJcdTA0NDBcdTA0MzBcdTA0M2RcdTA0 MzhcdTA0NDZcdTA0MzAgPSAxMDAwIFx1MDQzZlx1MDQzZVx1MDQzYlx1MDQ0Y1x1 MDQzN1x1MDQzZVx1MDQzMlx1MDQzMFx1MDQ0Mlx1MDQzNVx1MDQzYlx1MDQzNVx1 MDQzOVxuXG5qc29uID0gdG9vbHMucGFyc2VKU09OKHAxLmRhdGEpO1xuRk9SRUFD SCBqc29uLnJlc3BvbnNlLnVzZXJzO1xuXHR1aWQgXyAnOiAnIF8gZmlyc3RfbmFt ZSBfICcgJyBfIGxhc3RfbmFtZSBfICcgKCcgXyBwaG90b19tYXhfb3JpZyBfIFwi KVxcblwiO1xuRU5EO1xuXG5JRiBxdWVyeS5sdmwgPCBsaW1pdCAtIDEgJiYganNv bi5yZXNwb25zZS51c2Vycy5zaXplID09IDEwMDA7XG5cdGxpbmsgPSBxdWVyeS5x dWVyeS5tYXRjaCgnXiguKz8mb2Zmc2V0PSknKS4wO1xuXHRvZmZzZXQgPSAocXVl cnkubHZsICsgMSkgKiAxMDAwO1xuXHR0b29scy5xdWVyeS5hZGQobGluayBfIG9m ZnNldCk7XG5FTkQgJV0iLCJyZXN1bHRzU2F2ZVRvIjoiZmlsZSIsInJlc3VsdHNG aWxlTmFtZSI6IiRkYXRlZmlsZS5mb3JtYXQoKS50eHQiLCJhZGRpdGlvbmFsRm9y bWF0cyI6W10sInJlc3VsdHNVbmlxdWUiOiJzdHJpbmciLCJxdWVyeUZvcm1hdCI6 WyJodHRwczovL2FwaS52ay5jb20vbWV0aG9kL2dyb3Vwcy5nZXRNZW1iZXJzP2dy b3VwX2lkPSRxdWVyeSZmaWVsZHM9cGhvdG9fbWF4X29yaWcmb2Zmc2V0PTAiXSwi dW5pcXVlUXVlcmllcyI6ZmFsc2UsInNhdmVGYWlsZWRRdWVyaWVzIjpmYWxzZSwi aXRlcmF0b3JPcHRpb25zIjp7Im9uQWxsTGV2ZWxzIjpmYWxzZSwicXVlcnlCdWls ZGVyc0FmdGVySXRlcmF0b3IiOmZhbHNlLCJxdWVyeUJ1aWxkZXJzT25BbGxMZXZl bHMiOmZhbHNlfSwicmVzdWx0c09wdGlvbnMiOnsib3ZlcndyaXRlIjpmYWxzZX0s ImRvTG9nIjoibm8iLCJrZWVwVW5pcXVlIjoiTm8iLCJtb3JlT3B0aW9ucyI6ZmFs c2UsInJlc3VsdHNQcmVwZW5kIjoiIiwicmVzdWx0c0FwcGVuZCI6IiIsInF1ZXJ5 QnVpbGRlcnMiOltdLCJyZXN1bHRzQnVpbGRlcnMiOltdLCJjb25maWdPdmVycmlk ZXMiOltdLCJydW5UYXNrT25Db21wbGV0ZSI6bnVsbCwidXNlUmVzdWx0c0ZpbGVB c1F1ZXJpZXNGaWxlIjpmYWxzZSwicnVuVGFza09uQ29tcGxldGVDb25maWciOiJk ZWZhdWx0IiwidG9vbHNKUyI6IiJ9fQ== В пресете можно регулировать кол-во страниц для парсинга (1 страница = 1000 пользователей). Для этого в Общем формате результата есть переменная limit. Также можно добавлять или убирать любые поля в результате, меняя список параметров в Общем формате запроса. Полный список полей есть в описании groups.getMembers. Пример результата
Сейчас у ВК изменился формат чтобы работало надо заменить users на items Код: [% limit = 10; # 1 страница = 1000 пользователей json = tools.parseJSON(p1.data); FOREACH json.response.items; uid _ ': ' _ first_name _ ' ' _ last_name _ ' (' _ photo_max_orig _ ")\n"; END; IF query.lvl < limit - 1 && json.response.items.size == 1000; link = query.query.match('^(.+?&offset=)').0; offset = (query.lvl + 1) * 1000; tools.query.add(link _ offset); END %]
Пользователь Support Emil обновил ресурс Парсинг пользователей из группы ВК новой записью: Обновление 1.1 Узнать больше об этом обновлении...
привет, подскажите плиз как сделать вывод в csv. + как добавлять свои поля в вывод csv. в выводе в txt я прописал "новое поле" в ссылку Код: https://api.vk.com/method/groups.getMembers?group_id=$query&count=1000&fields=photo_max_orig&v=5.131&offset=0 добавил bdate + в выводе парсера добавил ' _ bdate _ ' Код: https://api.vk.com/method/groups.getMembers?group_id=$query&count=1000&fields=photo_max_orig,bdate&v=5.131&offset=0 и всё добавилось, но во время тестов бывало вместо значение просто 1 лишний пробел был, вместо значения. может это я где то проглядел, а может там как то по особому нужно добавлять?)
пообщался с чатгпт и пришёл с ним к такому решению. подскажите плиз как добавить шапку для csv фаила? Код: [% limit = 51; # 1 страница = 1000 пользователей json = tools.parseJSON(p1.data); FOREACH json.response.items; tools.CSVline(id, first_name, last_name, photo_max_orig); END; next_from = json.response.next_from; IF query.lvl < limit - 1 && next_from; link = query.query.match('^(.+?&offset=)').0; offset = (query.lvl + 1) * 1000; tools.query.add(link _ offset); END %]