Парсер телеграм чатов на основе Telethon, не извлекаются ссылки
Скрипт листает страницы, но не выводит ссылки на чаты в файл output.txt. Не понимаю как извлечь ссылки.Описание то что должен делать скрипт Он должен парсить ссылки на чаты с каждой страницы, записывая в файл output, и по истечению страниц переходить к следующему слову words.txt. Пример кода который у меня ниже
from telethon import TelegramClient, events
import asyncio
# Ваши учетные данные
api_id = '123'
api_hash = '123'
bot_username = 'en_SearchBot'
# Названия файлов
input_file = 'words.txt'
output_file = 'output.txt'
# Инициализация клиента
client = TelegramClient('session_name', api_id, api_hash)
async def process_keyword(bot, keyword, output):
print(f'? Ищем по ключевому слову: {keyword}')
await client.send_message(bot, keyword)
await asyncio.sleep(5) # Даем время для загрузки первой страницы
page = 1
while True:
async for message in client.iter_messages(bot, limit=1):
if message.text:
print(f'? Обработка страницы {page}')
# Обработка кнопок
links_found = False
if message.buttons:
for row in message.buttons:
for button in row:
if '?' in button.text and button.url:
print(f'? Найдена ссылка: {button.url}')
output.write(button.url + '\n')
links_found = True
if not links_found:
print(f'❗ На странице {page} не найдено ссылок на чаты.')
# Проверка на кнопку "➡️"
next_button = None
if message.buttons:
for row in message.buttons:
for button in row:
if '➡️' in button.text:
next_button = button
break
if next_button:
print(f'➡️ Переход к следующей странице {page + 1}')
await next_button.click()
await asyncio.sleep(5) # Даем время для загрузки следующей страницы
page += 1
else:
print(f'✅ Все страницы для "{keyword}" обработаны.')
return
async def main():
await client.start()
bot = await client.get_entity(bot_username)
# Считываем ключевые слова
with open(input_file, 'r', encoding='utf-8') as f:
keywords = [line.strip() for line in f.readlines()]
# Открываем файл для записи результатов
with open(output_file, 'w', encoding='utf-8') as output:
for keyword in keywords:
await process_keyword(bot, keyword, output)
await asyncio.sleep(3) # Задержка между ключевыми словами
print(f'? Поиск завершен. Результаты сохранены в {output_file}')
# Запуск
with client:
client.loop.run_until_complete(main())