Пишем Телеграм Бота для Автопостинга новостей с Хабра | Телеграм бот + Парсер
ฝัง
- เผยแพร่เมื่อ 26 ส.ค. 2024
- Сегодня мы напишем специального Телеграм Бота, который будет брать новостные посты с сайта Хабр, и постить их в нашем Телеграм канале! В этом ролике мы будем использовать библиотеки: telebot, telebot и beautifulsoup.
Привет! Меня зовут Игорь. На моём канале ты сможешь найти уроки по нейронным сетям, визуализации данных и программированию в целом.
Моя цель - сделать программирование более доступным и понятным. Для просмотра моих видео вам не нужно высшее образование по Computer science. Все непонятные темы и термины я буду понятно объяснять и показывать на примерах.
Оставайся с нами, и чтобы не пропустить ни одного видео - подписывайся на канал и нажимай на колокольчик!
► Ссылки из видео:
Код из видео - github.com/Igo...
✅ Группа VK - bit.ly/VK_Pseud...
✈️ Telegram канал - t.me/PseudoDev...
💲💲 Поддержи проект на Boosty - boosty.to/pseu...
📖 Плейлист "Программирование на Практике" - • Программирование на пр...
📖 Плейлист “Нейронные Сети на Понятном Языке” - • Нейронные Сети на Поня...
📖 Плейлист "Изучение NumPy" -
• Изучение NumPy
Не работает, ошибка
такая же тема
Dan Danzelov и Антон, да, такая проблема есть. Относительно недавно Habr немного поменял архитектур сайта. Положение всех элементов в HTML коде осталось на месте, но вот название классов и id - изменились.
Вам просто нужно, следуя инструкции из видео, поизучать код страницы, и в программу поместить название класса не из видео, а из самого сайта. Надеюсь я доходчиво объяснил, но если будут ещё вопросы - задавайте 😁
@@PseudoDev спасибо разберусь )
@@PseudoDev мб я тупой, но не очень понял как кусок с def commands работает и зачем в конце кода идет возврат None и Post id
@@PseudoDev Подскажи пж,как сделать парсинг из папки на пк,что бы он по порядку в течении определённого времени сразу картинку по очереди из папки?
И желательно из другого канала ещё.
Боже, спасибо тебе добрый человек!!!!
Нужно подробнее рассказать о моментах установки программ, о возможных проблемах.
Я не программист нифига, но вижу что всё просто. Проблемы только с всевозможнымм настройками программы и разными установками.
Здравствуй, проверил цикл где идет сравнение back_post_id и post_id, вроде бы все должно работать, он снова шлёт тот же пост, можно ли как то исправить?
А что делать если сайт не имеет 'id'? как в этом случае делать?
Привет, а как сделать чтобы только заголовок с новостного поста публиковать? Например риа новости: «Сегодня такое вот случилось» и чтобы только заголовки постились, как? А то в видео с ссылкой на ресурс и немного не то
Для этого нужно подстраивать программу-парсер под особенности сайта "риа новости". Но если рассматривать на примере нашей программы, то можно формировать пост лишь из значения переменной title, а description и url -не записывать
Ребзя, чтобы код бота работал, он должен быть одним из админов канала... У меня по другому не работало.. Вдруг кому то поможет)
У тебя получилось исправить class и id?Можешь прислать код, у меня не получается. Спасибо
@@sokolov_channel2035 привет, у тебя всё в итоге заработало?
Привет, а можешь сделать видео по хостингу бота ?
а как же кнопка отписки от подписки?
Текст не пересылается когда пишешь боту,с чем это связано? Бот у меня администратор,всё ввёл правильно,что не так?
Если у тебя Пайтон 3.10 >, то могут быть проблемы. Я поставил 3.9, всё наладилось
Я немного не понял, как код связать с ботом?
Ребята куда писать и сохранить ето код?
Привет сколько будет стоить сделать грабер постов готовый чтоб в настройках менять только сайт. Я просто не шарю во всем этом пытался разобраться запутался
Какое познавательное видео! Спасибо!
Интересно, возможно ли написать бота и насколько это сложно, чтобы он автоматически предлагал запись в группе ВКонтакте загружая туда фото/видео/текст из определенных Инстаграм-аккаунтов в реальном времени?
немношко сложно но возможно
Здраствуйте есть ошибка в коде при выполнении парсера, можете помочь разобраться. ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None))
Это в какую сторону нужно копать сейчас Вы писали что на хабре изменили структуру html кода. Теперь что делать можно могли бы подсказать если будет время.
Не работает. Когда что то пишу в боте, пост не отправляется в канал. Хотя все сделал точ точ как в видосе
Не подскажите как исправить ошибку "'NoneType' object has no attribute 'text'"? элементы разметки на актуальные я поменяла
Привет, использовал твой код, но для другого сайта. Проблема такая, бот все равно отправляет одно и тоже сообщение по нескольку раз. К тому же, не знаю с чем связанно если написать боту Старт - два раза подряд, он запостит 2 одинаковые новости, но если написать старт еще один раз он перестает реагировать, даже если ему писать рэндомные слова, он не выводит текст "Я тебя не понимаю. Напиши Старт".
Здорово, какую функцию нужно использовать чтобы например отправить ссылку картинки из инстаграм, а он скачивает и отправляет в чат🤔
Красава
Можешь подсказать какое в данный момент название класса и id на Habr? не могу разобраться, что вписывать в код (после изменения архитектуры).
Выведи весь код страницы в терминал
Там найди нужный тебе текст и вытащи от туда див класс айди, у меня не воркало с просмотром кода страницы, а вот как описал тебе, заработало
Подскажите пожалуйста, а как можно открыть ссылку в боте от пользователя автоматически. Спасибо
получается, если за 30 минут ожидания бота опубликуется несколько статей, то бот пришлет только последнюю
поэтому нужно сверять, как минимум, 3 последних
Вопрос открыт.
Как связаться с автором этого канала?
Как сделать бота, который будет: принимать, пересылать сообщения на канал? При этом, с возможностью бана избранных пользователей, которые присылают сообщения бо́ту.
Да нет, вопрос полностью закрыт)
Цель видео была в парсинге новостного сайта, и автоматической публикации в телеграм канале. Все что вы написали - никак не связано с видео
Я сам программист, но Delphi, PHP. Одно не пойму, пайтон интерпритируемый? То куда совать код?
Python - интерпретируемый язык. Код подается на вход в интерпретатор. Стандартный и самый базовый интерпретатор Python можно скачать на официальном сайте языка - www.python.org/downloads/
@@PseudoDev Благодарю за ответ. Но видео не полноценное:
Т.е. вы показали a=2 и b=3, потом print (a+b);
В браузере показали "5".
Но то, что нужно для этого ещё и поднять web-сервер с движком PHP, создать домен, засунуть файл в определённую директорию + обозвать файл index-ным, вы этот процесс пропустили.
Код любой дурак с вашего видео перенаберёт в любом блокнотике.
Но хотелось бы видеть реализацию под ключ, если вы уж сказали "А", говорите и "Б".
Я лично заинтересован в создании бота парсера и ваше видео уже что-то дает.
Но вот беда - не полностью.
Голова задымилась)
Я сегодня сам попробую. Если не получится плачу деньги за бота который привязан к определенному сайту))))
👍👍👍👍
Можно такой вопрос: Telegram боты создаются только через язык программирования Python или можно для этих целей использовать другие языки программирования? Почему на ваш взгляд так много видео создания Telegram ботов именно с помощью языка Python?
Можно писать ботов на любом языке программирования, хоть на ассемблере. На Python это делать просто удобнее всего, но, насколько я знаю, есть ещё удобные API для языков: C++, C#, Java и JavaScript
@@PseudoDev спасибо за ответ 👍
Подскажите, пожалуйста, а сам код то куда нужно вставлять? Я как то этот момент упустил
Не понимаю о чём вы
@@PseudoDev человек не понял как код вообще запускается, написать то написал, а как код запустить и где
@@user-dw6hh2nu5dАвтор видать сам видео передёрнул, не знает о чём речь.
А с других каналов в телеге !?)
Привет! Текст понятно, а как картинку переслать?
Ну так, картинка - это тот же текст. С помощью open() переносим картинку в оперативную память. Там она хранится в форме последовательности бит, а их можно легко отобразить в виде текста и отослать. myfile = open(image, 'rb') bytes = myfile.read()
@@PseudoDev это прикол 🤣
@@NahodkiWBOZON_1 забайтил получается))
@@PseudoDev получается
очень интересно, но ничего не понятно)
привет,вот если мне нужно будет несколько ссылок парсить (тз такое же как и действия в твоем видео) но нужно парсить несколько ссылок,как мне нужно это организовать ? просто создать функцию где будет собираться данные как на примере с видео (url,description,title). но если я буду везде одинаковые название переменных писать, то код же может не работать или я не прав? пожалуйста кто в теме,просветите пожалуйста
Привет. Смотри, если ты будешь работать с одним и тем же сайтом (допустим TH-cam), то ты можешь организовать функцию-парсер, которая будет принимать в качестве аргумента URL нужного видео, а на выходе, через "return" будет возвращаться список следующего вида: [title, description, url]. Таким образом тебе не придётся создавать большое количество отдельных переменных для разных парсеров
Привет, сделал всё по твоему ролику, всё работает! Но, работает если только написать боту "старт", как сделать что бы не пришлось ничего писать боту?
Тогда нужно убрать условие запуска по тексту "страт", и сразу перейти к bot.send_massege()
@@PseudoDev и как мне это сделать? если я убираю условие то бот вообще ничего не постит в канал.
Существуют какие-либо ограничения? Могут ли забанить IP-адрес за слишком частое обращение к сайту?
используй прокси у теня такойже случай был получается так что хабр видит подозрительную активность с твое домена изза частых запросов (ты какбудто дудосишь сайт)
Не работает
Добрый день, а возможно вакансии спарсить с этого сайта?
Да, вполне реализуемо
Всё что видите и даже не видите, но видите в дебагере, всё можно парсить. Парсинг это прежде всего чтение всего того, что должно уйти на веб-клиента в браузер.
видео познавательное, но на начальном этапе error 403 для пересылки сообщений
чтобы код бота работал, он должен быть одним из админов канала... У меня по другому не работало.. Вдруг поможет)
Что делать если бот отправляет только первую букву заголовка и нет никакой ошибки?
Возможно ты при парсинге или постинге заголовка случайно поставил нулевой индекс: [0]
Пробегись по коду, может ты где-то недосмотрел
Не работала 🤔
Еще не пробовала написать аналогичный бот (попозже попробую), но спасибо за видео а то да, все эти гайды для дебилов...
вау
Привет! При запуске исправленного кода (с новыми классами) вылезает ошибка "TypeError: 'NoneType' object is not subscriptable" ссылающаяся на строку "back_post_id = post_text[1]". Происходит это из за того что эта переменная ссылается на переменную(back_post_id = None), равную null или же None. Что ставить вместо значения None?
Подскажите пожалуйста, нужен бот. который логинится на сайт, проверяет не изменилась ли страница и если изменилась -высылает сообщение в телеграм нужным пользователям. Спасибо!
Пытаюсь запилить бота, который определенные слова на определённом сайте пишет. Тхт файл открыл, измеряю, но вот вопрос: куда-то в а BotFather вставить текст надо или же как использовать данный код? Сорян за нубство, но всё же.
Можно новости с яндекса также делать?
Можно, главное перенастроить работу парсера на архитектуру Яндекса
@@PseudoDev там просто нету айдишников вообще, там новости никак не пронумерованы в html
А. Да, такое бывает. Это означает, что почти вся архитектура построена на JS(
А как сделать чтобы он каждое утро м вечер в определённое время собирал и отправлял?
Можно убрать циклы, чтобы оставался код чисто парсера и бота-отправителя, и запускать этот скрипт. В Виндоус есть специальный раздел системных вызовов, которые срабатывают в определенное время. Точно не помню как называется, но в Гугле легко найти
@@PseudoDev cron?
Да, что-то типа того
Попытался спарсить Яндекс Дзен ( реальная задача стояла ), нихера, там защита от этой библиотеки, пробую Silenium..
Некоторые большие сервисы предоставляют собственные API для парсинга информации. Надо глянуть, может у Дзена тоже есть что-то такое 🤔
@@PseudoDev я хотел парсить статьи из Дзен канала в канал телеграмма, интересно, как это сделать?
Я нашел ролик по selenium, но там проблемка, браузер открывается каждый раз при парсинге
Можешь подготовить курс по PHP?
Сори, не пишу на PHP 💁♂
Курс могу организовать - уровень back-end разработчик и FULL-stack разработчик (уровень профессиональности - middle).
Но его люди не хотят покупать. Все хотят сами - бесплатно. 9 000 брал на Авито, ни один не захотел. А учиться в ВУЗе 300 000 - 500 000 р + много левой информации о истории России, Рюрика и уроки философии...
Выбор всегда за нами.
А что за редактор кода? Можно название?
Да, конечно. Я использую Visual Studio Code
@@PseudoDevКод куда совать после написания?
Понравился ролик и хочешь видеть больше годного контента?
Поддержи проект на Boosty - boosty.to/pseudodev
А можно сделать чтобы бот постил новости из группы вк?
Да, можно. Главное подстроить парсер под архитектуру ВК, и всё будет ок 👌
как раз сижу делаю азаза
Если ссылку на хозяина поста не оставлять,он может сделать так чтобы меня забанили?
Ошибка
Как сделать тоже самое для вк? Ответьте пожалуйста
Используй VK Api
@@PseudoDev а как
@@user-nd6rm7kb3p по назначению 😁
Этого бота можно закинуть в беседу?
В теории - да, это вполне реализуемо
@@PseudoDev И ещё , что делать если выдаёт эту ошибку? Traceback (most recent call last):
File "C:\Users\shugu\Desktop\Telegram-Parser-Bot-main\Parser.py", line 10, in
title= post.find("a", class_="newsitem__title-inner").text.strip()
AttributeError: 'NoneType' object has no attribute 'find'
@@PseudoDev Я просто создаю бота для парсинга новостной ленты майл , но не знаю что нужно удалить из твоего кода файла Bot.py , чтобы бот отправлял без проверки на айди , а просто каждые 20 минут , как это сделать? Помоги пожалуйста! Поддержал кстати твой канал)
@@pandasstero1123 Я не уверен в чём конкретно проблема. Нужно посмотреть в логи при DeBag-е (конкретно нужно посмотреть на значение переменной "post"). Скорее всего в строке (post = soup.find("li", class_="content-list__item content-list__item_post shortcuts_item", id=True)) программа просто не может обнаружить элемент на сейте, тем самым, в переменную "post" передаётся значение "None".
Я могу и ошибаться, но нужно сделай дебаг
@PANDASSTER O 5:06 вроде как, этот код работает без привязки к id. Ну а промежуток в 20 минут, можно сделать так же, как и тут (5:34), тут особой магии никакой нет. Кста, спасибо за поддержку 😇
хрень лютейшая . очень бычтрый ролик и не какого айди нетуууууууууу
post = soup.find("article", class_="tm-articles-list__item", id=True) если у вас ошибка с пост id
Здравствуйте, на какую строку нужно вписать эту команду?
че только не меня ни че не помогает
Ошибка Traceback (most recent call last):
File "не палю папку", line 7, in
@bot.message_handlers(content_types=["text"])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'list' object is not callable
Почему возникает такая ошибка: @bot.message_handler(content_types=['text'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not callable
Process finished with exit code 1
Здравствуй, проверил цикл где идет сравнение back_post_id и post_id, вроде бы все должно работать, но даже если у них id одинаковые он снова шлёт тот же пост, можно ли как то исправить?