Вопрос Нужна помощь Телеграмм

Начинающий
Статус
Оффлайн
Регистрация
23 Дек 2018
Сообщения
76
Реакции[?]
6
Поинты[?]
0
В чем суть, запросить у пользователя тематику канала которая ему нужнна. Найти не больше 100(можно ровно 100) каналов с данной тематикой, телеграм канал должен быть обязательно должен быть в промежутке от 1000 подписчиков до 50000 тысяч.
Сохранить все это в json, и дополнительно сохранить: Ссылку на канал, описание канала, количество подписчиков.

Не важно в тг бот, или скрипт.
 
Начинающий
Статус
Оффлайн
Регистрация
3 Апр 2021
Сообщения
111
Реакции[?]
15
Поинты[?]
1K
В чем суть, запросить у пользователя тематику канала которая ему нужнна. Найти не больше 100(можно ровно 100) каналов с данной тематикой, телеграм канал должен быть обязательно должен быть в промежутке от 1000 подписчиков до 50000 тысяч.
Сохранить все это в json, и дополнительно сохранить: Ссылку на канал, описание канала, количество подписчиков.

Не важно в тг бот, или скрипт.
Для этой задачи нужен список со всеми каналами и их тематикой, так как ты по другому не найдешь. Ну можешь попробовать сканировать контент и тд. но это сложно

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

 
Начинающий
Статус
Оффлайн
Регистрация
23 Дек 2018
Сообщения
76
Реакции[?]
6
Поинты[?]
0
Для этой задачи нужен список со всеми каналами и их тематикой, так как ты по другому не найдешь. Ну можешь попробовать сканировать контент и тд. но это сложно
Скрытое содержимое
Просто спарсил с сайта https://tgramsearch.com(NO AD) На выходе json 1680423919616.png
Есть прогресс выполнения скрипта, парсит он не все страницы. Мне было лень делать чтобы он парсил нормально


pip install requests beautifulsoup4 tqdm


Python:
import requests
from bs4 import BeautifulSoup
import json
import re
from tqdm import tqdm
text = "БиржаGIF и Video733IT588SMM3857Telegram3560Авто и мото3145Авторский блог2747Азартные игры443Азербайджанские каналы28Анекдоты52Аниме600Армянские каналы69Афиша196Белорусские каналы339Бизнес и финансы8395Блогеры15971Военное216Все подряд21290Гороскоп3173Грузинские каналы32Даркнет1186Дизайн1752Для мужчин286Для родителей3084ЕГЭ и экзамены5634Здоровье3730Игры7640Инстаграм1407Искусство2756Казахстанские каналы214Каталог142Киргизские каналы44Коронавирус228Криптовалюты7993Кулинария4257Лайфхаки107Лингвистика2253Литература3259Магазин9394Медицина2934Мобайл1184Мода и красота8121Молдавские каналы40Музыка8883Наука и технологии5250Недвижимость502Новости21945Образование7969Однострочные153Подкасты77Подслушано184Политика7617Пошлое 18+16672Природа и животные2451Прогнозы и ставки6249Прокси10Психология6284Путешествия5956Разное147253Региональные1464Религия3478Рукоделие1157Сервисы103Сливы481Спорт4916Стикеры37Строительство и ремонт2313Таджикские каналы38Удаленная работа3864Узбекские каналы972Украинские каналы1703ФЕМ-ЛГБТ-БЛМ134Фильмы и сериалы6710Фото7736Халява и скидки1048Цитаты5946Чаты36168Шок-контент858Экология91Экономика4808Юмор8129Юриспруденция1477"
split_text = re.split(r'(\d+)', text)
text_array = [split_text[i] + split_text[i + 1] for i in range(0, len(split_text) - 1, 2)]
print(f"Пример тематик для поиска: {text_array}")
s = input("Тематика тг канала для парсинга: ")
url = f"https://tgramsearch.com/search?query={s}"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
pager_div = soup.find('div', {'class': 'tg-pager-wrapper'})
pager_items = pager_div.find_all('li', {'class': 'tg-pager-li'})
links = []
for item in pager_items:
    a_tag = item.find('a')
    if a_tag:
        href = a_tag.get('href')
        links.append("https://tgramsearch.com" + href)
base_url = "https://tgramsearch.com"
channel_data = []
for link in tqdm(links, desc="Processing links", unit="link"):
    response = requests.get(link)
    soup = BeautifulSoup(response.content, 'html.parser')
    channel_divs = soup.find_all('div', {'class': 'tg-channel-wrapper', 'class': 'is-list'})
    for channel in channel_divs:
        tg_channel_link = channel.find("div", class_="tg-channel-link")
        if tg_channel_link:
            a_tag = tg_channel_link.find("a")
            if a_tag:
                href = a_tag["href"]
                full_url = base_url + href
                response = requests.get(full_url)
                soup = BeautifulSoup(response.text, "html.parser")
                tg_channel_more = soup.find("div", class_="tg-channel-more")
                a_tag = tg_channel_more.find("a", class_="app") if tg_channel_more else None
                url_tg = a_tag["href"] if a_tag else None
                tg_channel_description = soup.find("div", class_="tg-channel-description")
                tg_channel_user = soup.find("div", class_="tg-channel-user")
                tg_user_count = tg_channel_user.find("span", class_="tg-user-count") if tg_channel_user else None
                if url_tg:
                    channel_data.append({
                        "url_tg": url_tg,
                        "description": tg_channel_description.text.strip() if tg_channel_description else None,
                        "subscribe": tg_user_count.text.strip() if tg_user_count else None
                    })
with open(f"{s}.json", "w", encoding="utf-8") as f:
    json.dump(channel_data, f, ensure_ascii=False, indent=4)
 
Последнее редактирование:
Сверху Снизу