Python 3 — это современный язык, на котором просто и приятно писать программы.
Для печати значений в Питоне есть функция print(). Внутри круглых скобок через запятую мы пишем то, что хотим вывести. Вот программа, которая делает несколько вычислений:
print(5 + 10) print(3 * 7, (17 — 2) * 8) print(2 ** 16) # две звёздочки означают возведение в степень print(37 / 3) # один слэш — это деление с ответом-дробью print(37 // 3) # два слэша считают частное от деления нацело # это как операция div в других языках print(37 % 3) # процент считает остаток от деления нацело # это как операция mod в других языках
Для ввода данных в программу мы используем функцию input() . Она считывает одну строку.
Вот программа, которая считывает имя пользователя и приветствует его:
Пётр
print(‘Как вас зовут?’) name = input() # считываем строку и кладём её в переменную name print(‘Здравствуйте, ‘ + name + ‘!’)
Сбор информации о подписчиках Telegram-канала
На 2021 год боты в Telegram так и не имеют метода, позволяющего получать информацию о подписчиках канала. Тем не менее, существует достаточно сложное в освоении Telegram API и построенная на нём библиотека Telethon. Сегодня мы посмотрим, как при помощи библиотеки выгрузить информацию о подписчиках своего канала.
Парсинг в Python за 10 минут!
Создание приложения
Для начала необходимо создать приложение, через которое будут отправляться запросы к API. Перейдите на https://my.telegram.org и авторизуйтесь в Telegram-аккаунте:
После успешной авторизации перейдите на страницу API development tools:
Заполните все поля и жмите на создание приложения:
Из полученной конфигурации нам необходим app api_id и app api_hash:
Запрос к API
Импортируем telethon — он поможет сформировать запрос, и pandas — полученный ответ мы запишем в DataFrame.
from telethon import TelegramClient import pandas as pd
Вводим api_id, api_hash, наш номер телефона и ссылку на канал, информацию о подписчиках которого хотим получить. Доступ к информации о подписчиках есть только у администраторов канала.
api_id = 1234567 api_hash = ‘1b42hj25kd8jw42b234kwj242c’ phone = ‘+71234567890’ channel_href = ‘https://t.me/leftjoin’
Создаём новую сессию — вместо session_name можно подставить любое другое название. Методы в библиотеке работают асинхронно, поэтому ответа от них требуется ожидать:
client = TelegramClient(‘session_name’, api_id, api_hash) client = await client.start() dialogs = await client.get_dialogs()
Собираем все каналы текущего пользователя. Из ссылки забираем часть с именем канала и вытаскиваем из словаря нужный:
channels = my_channel = channel_href.split(‘/’)[-1] channel = channels[my_channel]
Подписчиков, доступ к которым не ограничен приватностью, можно получить методом get_participants. С 20 июля 2018 года Telegram установил ограничение в 200 подписчиков для вызова метода, и установка параметра aggressive на True поможет получить всех подписчиков за раз.
members_telethon_list = await client.get_participants(channel, aggressive=True)
Из полученных библиотечных структур извлекаем информацию о пользователях — их имена и телефоны:
username_list = [member.username for member in members_telethon_list] first_name_list = [member.first_name for member in members_telethon_list] last_name_list = [member.last_name for member in members_telethon_list] phone_list = [member.phone for member in members_telethon_list]
Из четырёх списков собираем DataFrame и пишем его в csv-таблицу:
df = pd.DataFrame() df[‘username’] = username_list df[‘first_name’] = first_name_list df[‘last_name’] = last_name_list df[‘phone’] = phone_list df.to_csv(‘subscribers.csv’, index=False)
Результат работы — такая таблица:
Для запуска в Jupyter Notebook описанный ниже код можно просто вставить в ячейку, но при запуске из Python-файла будет такая ошибка:
SyntaxError: ‘await’ outside function
Устранить проблему можно, записав весь код в асинхронную функцию. Целиком выглядеть код будет так:
from telethon import TelegramClient import pandas as pd import asyncio async def main(): api_id = 1234567 api_hash = ‘1b42hj25kd8jw42b234kwj242c’ phone = ‘+71234567890’ channel_href = ‘https://t.me/leftjoin’ client = TelegramClient(‘session_name’, api_id, api_hash) client = await client.start() dialogs = await client.get_dialogs() channels = my_channel = channel_href.split(‘/’)[-1] channel = channels[my_channel] members_telethon_list = await client.get_participants(channel, aggressive=True) username_list = [member.username for member in members_telethon_list] first_name_list = [member.first_name for member in members_telethon_list] last_name_list = [member.last_name for member in members_telethon_list] phone_list = [member.phone for member in members_telethon_list] df = pd.DataFrame() df[‘username’] = username_list df[‘first_name’] = first_name_list df[‘last_name’] = last_name_list df[‘phone’] = phone_list df.to_csv(‘subscribers.csv’, index=False) if __name__ == ‘__main__’: loop = asyncio.get_event_loop() loop.run_until_complete(main())
Поделиться
Поделиться
28 комментариев
Что-то не работает. Ругается: SyntaxError: ’await’ outside function
Николай Валиотти 2021
Добрый день! Проверили способ прямо сейчас — у нас всё работает. Пришлите, пожалуйста, свой код (можно через gist.github.com) и версию Python.
Да я вообще не очень разбираюсь в Python’е. Только начал учить буквально на днях. Парсер чатов-то сделал, но там попроще было (на другом сайте), а сейчас понадобился для дела свой канал собрать, а там такие камни подводные 🙂
Николай Валиотти 2021
В Python вовсе необязательно разделять отдельные участки кода на функции, как, например, в C 🙂 Попробуйте написать без них, просто записывая последовательно все команды из материала в файл — должно получиться вот так: https://gist.github.com/Elisejj/aec7867e5da55e295d148882ae41488c
Если так делать, то он снова на await ругается: SyntaxError: ’await’ outside function
Я ж с такой «атаки в лоб» и начинал 🙂 В общем, вот такое решение у меня работает (всё парсит и файл сохраняет): https://gist.github.com/Mnsrff/9cba7a3231034fac900dd00b692d7c0f
Но хотелось бы разобраться, почему так 🙂 Почему у вас без функций всё работает, а я вынужден был всё в них заворачивать и вызывать 🙂 Python 3.7 у меня. Библиотеки установлены.
Marsel Kh 2021
Добрый день. Спасибо за код.
А с чем может быть связано несовпадение количества участников группы и количество выгруженных? Подписчики могут где-то ограничить приватность и не светиться в группах?
А то у меня из 574 юзеров выгружается только 470, хотя последний элемент в members_telethon_list total равняется 574.
Николай Валиотти 2021
Да, я подозреваю, что дело в настройках приватности у ряда пользователей, которые не дают свои данные выгрузить. У меня была аналогичная ситуация с экспортом собственных подписчиков.
Максим Игоревич 2021
Добрый день.
Подскажите пожалуйста, как вытащить ID юзеров.
Максим Игоревич 2021
Михаил Артемьев 2021
Подскажите, есть ли способ получить список подписчиков канала, которые были удалены?
Николай Валиотти 2021
насколько мне известно, нет, увы, их уже не получить
Ольга Телюкова 2021
Cпособы парсинга в Телеграм 2023
Парсинг в телеграме поможет работникам сферы маркетинга разных направленностей: SMMщикам, арбитражникам и владельцам онлайн-бизнеса. В статье поговорим о способах парсинга чатов и каналов в telegram и как ими пользоваться.
- Что такое парсинг Телеграм
- Плюсы парсинга
- Минусы парсинга
- Telegram Soft
- A-Parser
- OneDash
- Telecobra
- TeleREG
- Где найти телеграм бота для парсинга
- ParserTgChat_bot
- Parsetgbot
Что такое парсинг Телеграм
Парсинг — процесс сбора участников чата или контента канала посредством софта для дальнейшего использования полученной информации в маркетинговых целях.
Плюсы парсинга
Готовую базу пользователей можно отсортировать по параметрам для формирования разных ЦА. После чистки в ней не будет дублированных пользователей и ботов, в ваших руках чистая база активных пользователей. Это быстрое и удобное занятие, после обработки все пользователи сохраняются в csv, xlsx или txt файл.
Минусы парсинга
Единственный, но большой минус — инвайтинг и спам рассылки пользователям караются модерацией мессенджера и самими людьми. Когда человек видит рассылку в ЛС, чаще всего сразу кидает отметку «Спам» после нескольких отметок аккаунт уйдёт в бан. Эту проблему можно решит: сделать рассылки более нативными, при инвайтинге пользователи должны увидеть действительно полезный контент. Тогда и жалоб будет меньше. Второй вариант — работать с сетью аккаунтов, и как только один забанят, в ход пойдёт следующий.
Сервисы для парсинга
Не стоит уповать только на бесплатные сервисы. Зачастую они помогают закрыть базовые, несложные задачи. Если нужен комплексный подход, лучше потратить деньги и купить софт, который справится с ними за раз.
Также стоит понимать, что сервисы и боты часто прекращают поддерживаться и перестают работать. Данная подборка парсеров телеграм чатов/каналов актуальна на начало 2023 года.
Telegram Soft
Функциональность сервиса ёмкая. Тот случай, когда один парсер телеграм чатов справится с комплексными задачами. Он может:
- Рассылать сообщения по базе.
- Массовые накрутки на канал.
- Инвайтить в группы и чаты.
- Парсить подписчиков.
- Отвечать на сообщения.
- Проверять номера телефонов на факт регистрации их в Телеграм.
По словам разработчиков, сервис может парсить пользователей из закрытых чатов, что является редкостью. Итоговый список выгружается в txt файл. Пробная версия программы стоит 500 рублей, за это вы получите доступ к программе, инструкции по работе. Программа будет работать 5 часов и вы получите аккаунты в размере 4 шт.
Когда в парсере накапливаются разные функции — его называют комбайном. A-Parser именно такой софт. В нём присутствуют более 90 парсеров, каждый из которых выполняет разные задачи. На сайте разработчиков можно заказать индивидуальный парсер под свои нужды. Тарифы:
- Lite: $179
- Pro: $299
- Enterprise: $479
Стоит уточнить, что полный набор парсеров вы получите только при подписке Pro. В тариф Lite входят только парсеры Google и Яндекс. Каждый из тарифов сильно отличается, перед покупкой внимательно прочитайте возможности каждого.
Софт оплачивается 1 раз, далее вы платите только за обновления программ. Обновления: $49 за 3 месяца, $149 за год или $399 пожизненно.
Подробнее про этот пресет парсера читайте на сайте A-Parser: Обзор парсера публичных групп Telegram Groupscraper.
Кроме основных парсеров OneDash обладает:
- Менеджером аккаунтов. Удобное управление вашими учетными записями и массовое редактирование многих параметров (username, bio, аватарка, 2FA и другое).
- Поиск нужных каналов и чатов по ключам. Функция поможет быстро найти каналы с нужной вам целевой аудиторией, поддерживает мультипоточность в работе. Совмещена с Windows и macOS.
Есть возможность оплачивать софт помесячно (1 349 рублей) или купить вечную лицензию единоразово (7 099 рублей).
Программа предоставляет 2 функциональности:
- Регистрация аккаунтов в телеге.
- Инвайтинг в чаты и группы.
Есть и полезные дополнительные функции: создание опросов на канале, накрутка (имитация активности в виде лайков, просмотров постов), создание и управление ботофермами, управление созданными аккаунтами. Судя по функционалу, софт больше подходит арбитражникам. Цены на тарифы: 5 645 , 9 950 и 18 645 рублей. Самый дорогой тариф включает в себя пожизненное использование сервиса.
TeleREG
- Регистрация акков через TDATA и sms-сервисы
- Использование прокси
- Бесплатный Zennobox
- Инвайтинг
- Проверка аккаунтов
- Установка аватарки и другие элементы изменения аккаунта
- Рассылка с поддержкой регулярных фраз и автоматическим сокращением ссылок
Есть бесплатный триал период на неограниченный срок. Но в таком случае будут доступны не все функции. Полный доступ стоит 2 000 р/м.
Что такое парсер чатов?
Это функциональность сервисов/ботов, которая позволяет собирать открытые данные о пользователях телеграм через механизм Application Programming Interface (API).
Боты для парсинг телеграм каналов и чатов
Главная проблема ботов — создатели быстро выгорают и перестают поддерживать продукт. Подборка ботов актуальная на январь 2023. ТГ ботами пользуются чаще программ, потому что удобнее делать всё в одном месте. Почти все боты-парсеры пишутся на Python и приклеиваются к телеге с помощью API Telegram.
Где найти телеграм бота для парсинга
- Написать самому. Для этого понадобится знания языка Пайтон и: aiogram, python-telegram-bot, TeleBot, Telethon одна из этих библиотек.
- Сделать с помощью конструктора. Благодаря современным технологиям есть множество конструкторов по созданию телеграм-ботов, в которых не нужны навыки программирования. На нём можно создать бесплатный парсер телеграм под свои нужды.
- Заказать у разработчиков. Достаточно заново посмотреть нашу статью, выше есть несколько сервисов, в которых можно заказать индивидуальный парсер.
- Работать с готовым. В самом телеграме нужно найти бота под нужную задачу и воспользоваться им.
ParserTgChat_bot
Бот может парсить открытые и закрытые каналы и чаты. Для начала работы нужно вписать ID канала/чата и выбрать критерии поиска, на выходе ParserTgChat_bot предоставит список подходящих подписчиков.
- Сутки 90р
- Месяц 390р
- Полгода 890р
- Год 1190р
- Вечная (лаймтайм) 1890р
Parsetgbot
Парсинг бота работает на открытых/закрытых чатах и комментарии в ТГ каналах. В parsetgbot есть несколько режимов работы. Быстрый подходит для чатов с количеством участников не более 10 000. С таким объемом данных бот справляется за пару минут. Результат в формате txt. Тарифы строятся необычным образом, на месячную(безлимитную) подписку и разовую:
Безлимитная подписка:
На день — 579 р
На неделю — 1 750 р
Разовые запросы:
Чат до 10 000 человек — Бесплатно!
Чат более 10 000 человек — 149 р
Все комментаторы в канале — 215 р
Писавшие сообщения в чате — 95 р
Как написать парсер телеграм-чатов на Python
Для функциональности парсинга нам понадобится Python 3 версии. Переходим на сайт https://my.telegram.org и создаем приложение, запоминаем API ID и API HASH.
Устанавливаем зависимости:
- pip3 install —upgrade pyrogram
- pip3 install —upgrade tgcrypto
Создаём 2 файлы и 2 папки: main.py, config.ini и session и chats.
В файл config.ini прописываем следующее:
api_id, api_hash — получены при регистрации приложения в telegram.org.
Данные файла 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(‘Количество пользователей: nn’.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/.txt’.format(chat)) print(‘Сбор данных закончен!’) if __name__ == ‘__main__’: main()
Заполняем данные:
chat = » # Название чата или его ID
string_format = » # Формат строки для записи
Заполнять только название или ID чата если известно, без https://t.me/
Формат строки — это настройки строки с полученными данными. В скрипт заложены следующие шаблоны.
— Фамилия (Если указана)
— Ник пользователя (Если указан)
— Номер телефона (Если пользователь есть в вашей телефонной книге)
— Статус пользователя в чате (Создатель, Администратор или пользователь)
Количество пользователей: 156
ID: 1234567
Имя: Иван
ID: 1234567
Имя: Максим
Скрипт работает на чатах до 10000 участников. Запускать обязательно через VPN/прокси.
Рубрики Сервисы,Статьи Метки telegramпарсингтелеграм-боты
3 комментария на “ Cпособы парсинга в Телеграм 2023 ”
accuzative :
accuzative :
Hazarskiy :
Этот бесплатный телеграмм-бот умеет парсить посты из групп ВКонтакте и автоматически выкладывать их в Вашем телеграмм-канале.
https://t.me/VKParserLokiBot
Источник: traff.ink