BotHub
Разработчик ботов
Для парсинга нам понадобится Python 3 версии.
Для начала переходим на сайт https://my.telegram.org и создаем приложение, запоминаем API ID и API HASH.
Устанавливаем зависимости
pip3 install --upgrade pyrogram
pip3 install --upgrade tgcrypto
Создаем 2 файла: main.py, config.ini
И 2 папки: session и chats (Названия смогут быть любыми, созданы для удобства и порядка)
В config.ini пишем следующие данные
[pyrogram]
api_id = 1234567
api_hash = bf243ef2d7224ebc6effj42718e5bb68
api_id, api_hash получены при регистрации приложения
Переходим к main.py
Заполняем данные
chat = '' # Название чата или его ID
string_format = '' # Формат строки для записи
Заполнять только название или ID чата если известно, без https://t.me/
Формат строки - это настройки строки с полученными данными. В скрипт заложены следующие шаблоны.
{id} - ID пользователя
{first_name} - Имя пользователя
{last_name} - Фамилия (Если указана)
{username} - Ник пользователя (Если указан)
{phone_number} - Номер телефона (Если пользователь есть в вашей телефонной книге)
{'status} - Статус пользователя в данном чате (Создатель, Администратор или пользователь)
Можно и нужно использовать разделители и перенос строк (\n)
К примеру нужно получить все ID и их имена ID: {id} \n Имя: {first_name}\n\n
В папке chats получаем список с таким содержанием.
Первая строка количество участников, далее запрошенная вами информация.
Количество пользователей: 156
ID: 1234567
Имя: Иван
ID: 1234567
Имя: Максим
и т.д
Данный скрипт парсит до 10000 участников, если нужно больше, могу предложить другую реализацию.
Запускать обязательно через VPN. Можно настроить и прокси, если нужно могу сказать как и где указывать.
При первом запуске у вас спросит ваш номер телефона от аккаунта, через который вы будете работать и код, полученный по СМС или в чат уже запущеного клиента.
Задавайте вопросы. Приятного вечера.
Для начала переходим на сайт https://my.telegram.org и создаем приложение, запоминаем API ID и API HASH.
Устанавливаем зависимости
pip3 install --upgrade pyrogram
pip3 install --upgrade tgcrypto
Создаем 2 файла: main.py, config.ini
И 2 папки: session и chats (Названия смогут быть любыми, созданы для удобства и порядка)
В config.ini пишем следующие данные
[pyrogram]
api_id = 1234567
api_hash = bf243ef2d7224ebc6effj42718e5bb68
api_id, api_hash получены при регистрации приложения
Переходим к main.py
Код:
import time
import json
from pyrogram import Client
from pyrogram.api.errors import FloodWait
app = Client('session', workdir='./session') # Настройки сессии клиента
chat = '' # Название чата или его ID
string_format = '' # Формат строки для записи
def parser(id):
""" Функция парсинга пользователей """
members = []
offset = 0
limit = 200
while True:
try:
chunk = app.get_chat_members(id, offset)
except FloodWait as e:
time.sleep(e.x)
continue
if not chunk.chat_members:
break
members.extend(chunk.chat_members)
offset += len(chunk.chat_members)
return members
def template(data, template):
""" Функция нормализатора строк """
data = json.loads(str(data))
data['user'].setdefault('first_name', '-')
data['user'].setdefault('last_name', '-')
data['user'].setdefault('username', '-')
data['user'].setdefault('phone_number', '-')
return template.format(id=data['user']['id'],
first_name=data['user']['first_name'],
last_name=data['user']['last_name'],
username=data['user']['username'],
phone_number=data['user']['phone_number'],
status=data['status'])
def wfile(data, template_format, path):
""" Функция записи строк в файл """
with open(path, 'w', encoding='utf8') as file:
file.writelines('Количество пользователей: {0}\n\n'.format(len(data)))
file.writelines([template(user, template_format) for user in data])
def main():
with app:
data = parser(chat)
wfile(data, string_format, './chats/{0}.txt'.format(chat))
print('Сбор данных закончен!')
if __name__ == '__main__':
main()
Заполняем данные
chat = '' # Название чата или его ID
string_format = '' # Формат строки для записи
Заполнять только название или ID чата если известно, без https://t.me/
Формат строки - это настройки строки с полученными данными. В скрипт заложены следующие шаблоны.
{id} - ID пользователя
{first_name} - Имя пользователя
{last_name} - Фамилия (Если указана)
{username} - Ник пользователя (Если указан)
{phone_number} - Номер телефона (Если пользователь есть в вашей телефонной книге)
{'status} - Статус пользователя в данном чате (Создатель, Администратор или пользователь)
Можно и нужно использовать разделители и перенос строк (\n)
К примеру нужно получить все ID и их имена ID: {id} \n Имя: {first_name}\n\n
В папке chats получаем список с таким содержанием.
Первая строка количество участников, далее запрошенная вами информация.
Количество пользователей: 156
ID: 1234567
Имя: Иван
ID: 1234567
Имя: Максим
и т.д
Данный скрипт парсит до 10000 участников, если нужно больше, могу предложить другую реализацию.
Запускать обязательно через VPN. Можно настроить и прокси, если нужно могу сказать как и где указывать.
При первом запуске у вас спросит ваш номер телефона от аккаунта, через который вы будете работать и код, полученный по СМС или в чат уже запущеного клиента.
Задавайте вопросы. Приятного вечера.