Пишем Телеграм Бота для Автопостинга новостей с Хабра | Телеграм бот + Парсер

  Рет қаралды 40,710

Псевдо Программист

Псевдо Программист

2 жыл бұрын

Сегодня мы напишем специального Телеграм Бота, который будет брать новостные посты с сайта Хабр, и постить их в нашем Телеграм канале! В этом ролике мы будем использовать библиотеки: telebot, telebot и beautifulsoup.
Привет! Меня зовут Игорь. На моём канале ты сможешь найти уроки по нейронным сетям, визуализации данных и программированию в целом.
Моя цель - сделать программирование более доступным и понятным. Для просмотра моих видео вам не нужно высшее образование по Computer science. Все непонятные темы и термины я буду понятно объяснять и показывать на примерах.
Оставайся с нами, и чтобы не пропустить ни одного видео - подписывайся на канал и нажимай на колокольчик!
► Ссылки из видео:
Код из видео - github.com/IgorVolochay/Teleg...
✅ Группа VK - bit.ly/VK_PseudoDev
✈️ Telegram канал - t.me/PseudoDeveloper
💲💲 Поддержи проект на Boosty - boosty.to/pseudodev
📖 Плейлист "Программирование на Практике" - • Программирование на пр...
📖 Плейлист “Нейронные Сети на Понятном Языке” - • Нейронные Сети на Поня...
📖 Плейлист "Изучение NumPy" -
• Изучение NumPy

Пікірлер: 125
@dan323609
@dan323609 2 жыл бұрын
Не работает, ошибка
@user-oy9qk4om1x
@user-oy9qk4om1x 2 жыл бұрын
такая же тема
@PseudoDev
@PseudoDev 2 жыл бұрын
Dan Danzelov и Антон, да, такая проблема есть. Относительно недавно Habr немного поменял архитектур сайта. Положение всех элементов в HTML коде осталось на месте, но вот название классов и id - изменились. Вам просто нужно, следуя инструкции из видео, поизучать код страницы, и в программу поместить название класса не из видео, а из самого сайта. Надеюсь я доходчиво объяснил, но если будут ещё вопросы - задавайте 😁
@dan323609
@dan323609 2 жыл бұрын
@@PseudoDev спасибо разберусь )
@user-oy9qk4om1x
@user-oy9qk4om1x 2 жыл бұрын
@@PseudoDev мб я тупой, но не очень понял как кусок с def commands работает и зачем в конце кода идет возврат None и Post id
@sep_spell4668
@sep_spell4668 2 жыл бұрын
@@PseudoDev Подскажи пж,как сделать парсинг из папки на пк,что бы он по порядку в течении определённого времени сразу картинку по очереди из папки? И желательно из другого канала ещё.
@dayler3
@dayler3 Жыл бұрын
Здравствуй, проверил цикл где идет сравнение back_post_id и post_id, вроде бы все должно работать, но даже если у них id одинаковые он снова шлёт тот же пост, можно ли как то исправить?
@RYAN-ev9ev
@RYAN-ev9ev 2 жыл бұрын
Здорово, какую функцию нужно использовать чтобы например отправить ссылку картинки из инстаграм, а он скачивает и отправляет в чат🤔
@yuobbhu7217
@yuobbhu7217 7 ай бұрын
Привет сколько будет стоить сделать грабер постов готовый чтоб в настройках менять только сайт. Я просто не шарю во всем этом пытался разобраться запутался
@dmzdmz7013
@dmzdmz7013 2 жыл бұрын
Подскажите пожалуйста, а как можно открыть ссылку в боте от пользователя автоматически. Спасибо
@1isishka
@1isishka Жыл бұрын
Не подскажите как исправить ошибку "'NoneType' object has no attribute 'text'"? элементы разметки на актуальные я поменяла
@greykoff3325
@greykoff3325 5 ай бұрын
Здраствуйте есть ошибка в коде при выполнении парсера, можете помочь разобраться. ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None)) Это в какую сторону нужно копать сейчас Вы писали что на хабре изменили структуру html кода. Теперь что делать можно могли бы подсказать если будет время.
@user-cb9fx3gv7d
@user-cb9fx3gv7d 2 жыл бұрын
Привет, а можешь сделать видео по хостингу бота ?
@user-iy3yo2wt1n
@user-iy3yo2wt1n 2 жыл бұрын
👍👍👍👍
@fruitjam8838
@fruitjam8838 2 жыл бұрын
Можешь подсказать какое в данный момент название класса и id на Habr? не могу разобраться, что вписывать в код (после изменения архитектуры).
@Whosheit
@Whosheit Жыл бұрын
Выведи весь код страницы в терминал Там найди нужный тебе текст и вытащи от туда див класс айди, у меня не воркало с просмотром кода страницы, а вот как описал тебе, заработало
@moneyy-time
@moneyy-time Жыл бұрын
Не работает. Когда что то пишу в боте, пост не отправляется в канал. Хотя все сделал точ точ как в видосе
@ssshhhhhiiiizzzzaaa
@ssshhhhhiiiizzzzaaa 7 ай бұрын
Я немного не понял, как код связать с ботом?
@piratsyberyjski3644
@piratsyberyjski3644 2 жыл бұрын
Привет, использовал твой код, но для другого сайта. Проблема такая, бот все равно отправляет одно и тоже сообщение по нескольку раз. К тому же, не знаю с чем связанно если написать боту Старт - два раза подряд, он запостит 2 одинаковые новости, но если написать старт еще один раз он перестает реагировать, даже если ему писать рэндомные слова, он не выводит текст "Я тебя не понимаю. Напиши Старт".
@resttime00
@resttime00 10 ай бұрын
Ребята куда писать и сохранить ето код?
@user-tv9cq3ch1x
@user-tv9cq3ch1x Жыл бұрын
Красава
@bananeah
@bananeah Жыл бұрын
Текст не пересылается когда пишешь боту,с чем это связано? Бот у меня администратор,всё ввёл правильно,что не так?
@tttttt4260
@tttttt4260 Жыл бұрын
Если у тебя Пайтон 3.10 >, то могут быть проблемы. Я поставил 3.9, всё наладилось
@artyr2944
@artyr2944 Жыл бұрын
привет,вот если мне нужно будет несколько ссылок парсить (тз такое же как и действия в твоем видео) но нужно парсить несколько ссылок,как мне нужно это организовать ? просто создать функцию где будет собираться данные как на примере с видео (url,description,title). но если я буду везде одинаковые название переменных писать, то код же может не работать или я не прав? пожалуйста кто в теме,просветите пожалуйста
@PseudoDev
@PseudoDev Жыл бұрын
Привет. Смотри, если ты будешь работать с одним и тем же сайтом (допустим KZbin), то ты можешь организовать функцию-парсер, которая будет принимать в качестве аргумента URL нужного видео, а на выходе, через "return" будет возвращаться список следующего вида: [title, description, url]. Таким образом тебе не придётся создавать большое количество отдельных переменных для разных парсеров
@user-gh2ml3cf5o
@user-gh2ml3cf5o 10 ай бұрын
Можно такой вопрос: Telegram боты создаются только через язык программирования Python или можно для этих целей использовать другие языки программирования? Почему на ваш взгляд так много видео создания Telegram ботов именно с помощью языка Python?
@PseudoDev
@PseudoDev 10 ай бұрын
Можно писать ботов на любом языке программирования, хоть на ассемблере. На Python это делать просто удобнее всего, но, насколько я знаю, есть ещё удобные API для языков: C++, C#, Java и JavaScript
@user-gh2ml3cf5o
@user-gh2ml3cf5o 10 ай бұрын
@@PseudoDev спасибо за ответ 👍
@buddyconcert1918
@buddyconcert1918 2 жыл бұрын
Какое познавательное видео! Спасибо! Интересно, возможно ли написать бота и насколько это сложно, чтобы он автоматически предлагал запись в группе ВКонтакте загружая туда фото/видео/текст из определенных Инстаграм-аккаунтов в реальном времени?
@user-yv8wu1jn4l
@user-yv8wu1jn4l Жыл бұрын
немношко сложно но возможно
@user-zi6dv4ex3d
@user-zi6dv4ex3d Жыл бұрын
Существуют какие-либо ограничения? Могут ли забанить IP-адрес за слишком частое обращение к сайту?
@RandomJel
@RandomJel Жыл бұрын
используй прокси у теня такойже случай был получается так что хабр видит подозрительную активность с твое домена изза частых запросов (ты какбудто дудосишь сайт)
@samadovmalik
@samadovmalik 2 жыл бұрын
А с других каналов в телеге !?)
@Krasnovosti-ru
@Krasnovosti-ru 2 ай бұрын
Я сам программист, но Delphi, PHP. Одно не пойму, пайтон интерпритируемый? То куда совать код?
@PseudoDev
@PseudoDev 2 ай бұрын
Python - интерпретируемый язык. Код подается на вход в интерпретатор. Стандартный и самый базовый интерпретатор Python можно скачать на официальном сайте языка - www.python.org/downloads/
@Krasnovosti-ru
@Krasnovosti-ru 2 ай бұрын
@@PseudoDev Благодарю за ответ. Но видео не полноценное: Т.е. вы показали a=2 и b=3, потом print (a+b); В браузере показали "5". Но то, что нужно для этого ещё и поднять web-сервер с движком PHP, создать домен, засунуть файл в определённую директорию + обозвать файл index-ным, вы этот процесс пропустили. Код любой дурак с вашего видео перенаберёт в любом блокнотике. Но хотелось бы видеть реализацию под ключ, если вы уж сказали "А", говорите и "Б". Я лично заинтересован в создании бота парсера и ваше видео уже что-то дает. Но вот беда - не полностью.
@barinbigcitymadridnight1585
@barinbigcitymadridnight1585 11 ай бұрын
Подскажите, пожалуйста, а сам код то куда нужно вставлять? Я как то этот момент упустил
@PseudoDev
@PseudoDev 11 ай бұрын
Не понимаю о чём вы
@user-dw6hh2nu5d
@user-dw6hh2nu5d 10 ай бұрын
@@PseudoDev человек не понял как код вообще запускается, написать то написал, а как код запустить и где
@Krasnovosti-ru
@Krasnovosti-ru 2 ай бұрын
@@user-dw6hh2nu5dАвтор видать сам видео передёрнул, не знает о чём речь.
@Earth-house
@Earth-house 10 ай бұрын
Голова задымилась)
@user-bp1tf1py9u
@user-bp1tf1py9u 9 ай бұрын
вау
@waspe916
@waspe916 2 жыл бұрын
получается, если за 30 минут ожидания бота опубликуется несколько статей, то бот пришлет только последнюю
@waspe916
@waspe916 2 жыл бұрын
поэтому нужно сверять, как минимум, 3 последних
@vitaliykrymskiy4303
@vitaliykrymskiy4303 2 жыл бұрын
Ребзя, чтобы код бота работал, он должен быть одним из админов канала... У меня по другому не работало.. Вдруг кому то поможет)
@sokolov_channel2035
@sokolov_channel2035 2 жыл бұрын
У тебя получилось исправить class и id?Можешь прислать код, у меня не получается. Спасибо
@danielgeller7629
@danielgeller7629 2 жыл бұрын
@@sokolov_channel2035 привет, у тебя всё в итоге заработало?
@Skwart7
@Skwart7 2 жыл бұрын
Что делать если бот отправляет только первую букву заголовка и нет никакой ошибки?
@PseudoDev
@PseudoDev 2 жыл бұрын
Возможно ты при парсинге или постинге заголовка случайно поставил нулевой индекс: [0] Пробегись по коду, может ты где-то недосмотрел
@MrBooomsik
@MrBooomsik 7 ай бұрын
Добрый день, а возможно вакансии спарсить с этого сайта?
@PseudoDev
@PseudoDev 7 ай бұрын
Да, вполне реализуемо
@Krasnovosti-ru
@Krasnovosti-ru 2 ай бұрын
Всё что видите и даже не видите, но видите в дебагере, всё можно парсить. Парсинг это прежде всего чтение всего того, что должно уйти на веб-клиента в браузер.
@coderblog4485
@coderblog4485 2 жыл бұрын
Не работала 🤔
@klaymov
@klaymov 10 ай бұрын
Привет, сделал всё по твоему ролику, всё работает! Но, работает если только написать боту "старт", как сделать что бы не пришлось ничего писать боту?
@PseudoDev
@PseudoDev 10 ай бұрын
Тогда нужно убрать условие запуска по тексту "страт", и сразу перейти к bot.send_massege()
@klaymov
@klaymov 10 ай бұрын
@@PseudoDev и как мне это сделать? если я убираю условие то бот вообще ничего не постит в канал.
@axelfoleystyle
@axelfoleystyle 19 күн бұрын
Вопрос открыт. Как связаться с автором этого канала? Как сделать бота, который будет: принимать, пересылать сообщения на канал? При этом, с возможностью бана избранных пользователей, которые присылают сообщения бо́ту.
@PseudoDev
@PseudoDev 19 күн бұрын
Да нет, вопрос полностью закрыт) Цель видео была в парсинге новостного сайта, и автоматической публикации в телеграм канале. Все что вы написали - никак не связано с видео
@Earth-house
@Earth-house 10 ай бұрын
Я сегодня сам попробую. Если не получится плачу деньги за бота который привязан к определенному сайту))))
@user-to9zd2tr2o
@user-to9zd2tr2o 2 жыл бұрын
видео познавательное, но на начальном этапе error 403 для пересылки сообщений
@vitaliykrymskiy4303
@vitaliykrymskiy4303 2 жыл бұрын
чтобы код бота работал, он должен быть одним из админов канала... У меня по другому не работало.. Вдруг поможет)
@AnnaBulanova
@AnnaBulanova Жыл бұрын
А что за редактор кода? Можно название?
@PseudoDev
@PseudoDev Жыл бұрын
Да, конечно. Я использую Visual Studio Code
@Krasnovosti-ru
@Krasnovosti-ru 2 ай бұрын
@@PseudoDevКод куда совать после написания?
@JVSd-SG
@JVSd-SG 2 жыл бұрын
А как сделать чтобы он каждое утро м вечер в определённое время собирал и отправлял?
@PseudoDev
@PseudoDev 2 жыл бұрын
Можно убрать циклы, чтобы оставался код чисто парсера и бота-отправителя, и запускать этот скрипт. В Виндоус есть специальный раздел системных вызовов, которые срабатывают в определенное время. Точно не помню как называется, но в Гугле легко найти
@JVSd-SG
@JVSd-SG 2 жыл бұрын
@@PseudoDev cron?
@PseudoDev
@PseudoDev 2 жыл бұрын
Да, что-то типа того
@TheDimonchiks
@TheDimonchiks 2 жыл бұрын
А можно сделать чтобы бот постил новости из группы вк?
@PseudoDev
@PseudoDev 2 жыл бұрын
Да, можно. Главное подстроить парсер под архитектуру ВК, и всё будет ок 👌
@Whosheit
@Whosheit Жыл бұрын
как раз сижу делаю азаза
@hooligan8
@hooligan8 2 ай бұрын
Привет! Текст понятно, а как картинку переслать?
@PseudoDev
@PseudoDev 2 ай бұрын
Ну так, картинка - это тот же текст. С помощью open() переносим картинку в оперативную память. Там она хранится в форме последовательности бит, а их можно легко отобразить в виде текста и отослать. myfile = open(image, 'rb') bytes = myfile.read()
@hooligan8
@hooligan8 2 ай бұрын
@@PseudoDev это прикол 🤣
@PseudoDev
@PseudoDev 2 ай бұрын
@@hooligan8 забайтил получается))
@hooligan8
@hooligan8 2 ай бұрын
@@PseudoDev получается
@MaxmasMontage
@MaxmasMontage 2 жыл бұрын
Можно новости с яндекса также делать?
@PseudoDev
@PseudoDev 2 жыл бұрын
Можно, главное перенастроить работу парсера на архитектуру Яндекса
@MaxmasMontage
@MaxmasMontage 2 жыл бұрын
@@PseudoDev там просто нету айдишников вообще, там новости никак не пронумерованы в html
@PseudoDev
@PseudoDev 2 жыл бұрын
А. Да, такое бывает. Это означает, что почти вся архитектура построена на JS(
@vitaliishpychka9243
@vitaliishpychka9243 Жыл бұрын
Можешь подготовить курс по PHP?
@PseudoDev
@PseudoDev Жыл бұрын
Сори, не пишу на PHP 💁‍♂
@Krasnovosti-ru
@Krasnovosti-ru 2 ай бұрын
Курс могу организовать - уровень back-end разработчик и FULL-stack разработчик (уровень профессиональности - middle). Но его люди не хотят покупать. Все хотят сами - бесплатно. 9 000 брал на Авито, ни один не захотел. А учиться в ВУЗе 300 000 - 500 000 р + много левой информации о истории России, Рюрика и уроки философии... Выбор всегда за нами.
@Kvant_Jack
@Kvant_Jack 2 жыл бұрын
Пытаюсь запилить бота, который определенные слова на определённом сайте пишет. Тхт файл открыл, измеряю, но вот вопрос: куда-то в а BotFather вставить текст надо или же как использовать данный код? Сорян за нубство, но всё же.
@user-dh5gu9yk4d
@user-dh5gu9yk4d 6 ай бұрын
Не работает
@user-cz1ti4vj9m
@user-cz1ti4vj9m Жыл бұрын
Подскажите пожалуйста, нужен бот. который логинится на сайт, проверяет не изменилась ли страница и если изменилась -высылает сообщение в телеграм нужным пользователям. Спасибо!
@nikitaermolenko7813
@nikitaermolenko7813 Жыл бұрын
Попытался спарсить Яндекс Дзен ( реальная задача стояла ), нихера, там защита от этой библиотеки, пробую Silenium..
@PseudoDev
@PseudoDev Жыл бұрын
Некоторые большие сервисы предоставляют собственные API для парсинга информации. Надо глянуть, может у Дзена тоже есть что-то такое 🤔
@nikitaermolenko7813
@nikitaermolenko7813 Жыл бұрын
@@PseudoDev я хотел парсить статьи из Дзен канала в канал телеграмма, интересно, как это сделать? Я нашел ролик по selenium, но там проблемка, браузер открывается каждый раз при парсинге
@evgenianovikova3596
@evgenianovikova3596 4 ай бұрын
Еще не пробовала написать аналогичный бот (попозже попробую), но спасибо за видео а то да, все эти гайды для дебилов...
@hushpc
@hushpc 7 ай бұрын
Привет! При запуске исправленного кода (с новыми классами) вылезает ошибка "TypeError: 'NoneType' object is not subscriptable" ссылающаяся на строку "back_post_id = post_text[1]". Происходит это из за того что эта переменная ссылается на переменную(back_post_id = None), равную null или же None. Что ставить вместо значения None?
@user-nd6rm7kb3p
@user-nd6rm7kb3p 2 жыл бұрын
Как сделать тоже самое для вк? Ответьте пожалуйста
@PseudoDev
@PseudoDev 2 жыл бұрын
Используй VK Api
@user-nd6rm7kb3p
@user-nd6rm7kb3p 2 жыл бұрын
@@PseudoDev а как
@PseudoDev
@PseudoDev 2 жыл бұрын
@@user-nd6rm7kb3p по назначению 😁
@nikita.134
@nikita.134 Жыл бұрын
Если ссылку на хозяина поста не оставлять,он может сделать так чтобы меня забанили?
@bgds5848
@bgds5848 11 ай бұрын
Ошибка
@pandasstero1123
@pandasstero1123 2 жыл бұрын
Этого бота можно закинуть в беседу?
@PseudoDev
@PseudoDev 2 жыл бұрын
В теории - да, это вполне реализуемо
@pandasstero1123
@pandasstero1123 2 жыл бұрын
@@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'
@pandasstero1123
@pandasstero1123 2 жыл бұрын
​@@PseudoDev Я просто создаю бота для парсинга новостной ленты майл , но не знаю что нужно удалить из твоего кода файла Bot.py , чтобы бот отправлял без проверки на айди , а просто каждые 20 минут , как это сделать? Помоги пожалуйста! Поддержал кстати твой канал)
@PseudoDev
@PseudoDev 2 жыл бұрын
​@@pandasstero1123 Я не уверен в чём конкретно проблема. Нужно посмотреть в логи при DeBag-е (конкретно нужно посмотреть на значение переменной "post"). Скорее всего в строке (post = soup.find("li", class_="content-list__item content-list__item_post shortcuts_item", id=True)) программа просто не может обнаружить элемент на сейте, тем самым, в переменную "post" передаётся значение "None". Я могу и ошибаться, но нужно сделай дебаг
@PseudoDev
@PseudoDev 2 жыл бұрын
@PANDASSTER O 5:06 вроде как, этот код работает без привязки к id. Ну а промежуток в 20 минут, можно сделать так же, как и тут (5:34), тут особой магии никакой нет. Кста, спасибо за поддержку 😇
@Massage_Bigdan
@Massage_Bigdan Жыл бұрын
хрень лютейшая . очень бычтрый ролик и не какого айди нетуууууууууу
@iyyy890
@iyyy890 6 ай бұрын
post = soup.find("article", class_="tm-articles-list__item", id=True) если у вас ошибка с пост id
@Digital_Rin
@Digital_Rin 6 ай бұрын
Здравствуйте, на какую строку нужно вписать эту команду?
@user-xr7qu3ji9h
@user-xr7qu3ji9h 5 ай бұрын
че только не меня ни че не помогает
@bgds5848
@bgds5848 11 ай бұрын
Ошибка Traceback (most recent call last): File "не палю папку", line 7, in @bot.message_handlers(content_types=["text"]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: 'list' object is not callable
@danilsharafutdinov5769
@danilsharafutdinov5769 Жыл бұрын
Почему возникает такая ошибка: @bot.message_handler(content_types=['text']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: 'NoneType' object is not callable Process finished with exit code 1
Python Быстрее чем Си?! Ускоряем Python До Максимума!
15:22
Псевдо Программист
Рет қаралды 19 М.
Грамотное оформление GitHub Репозитория
17:15
Псевдо Программист
Рет қаралды 1,2 М.
100😭🎉 #thankyou
00:28
はじめしゃちょー(hajime)
Рет қаралды 27 МЛН
Как быстро замутить ЭлектроСамокат
00:59
ЖЕЛЕЗНЫЙ КОРОЛЬ
Рет қаралды 9 МЛН
Кратко про Python Tkinter | Как создавать GUI Приложения
11:08
Псевдо Программист
Рет қаралды 54 М.
Работа с файлами котлин
7:23
FunDroid
Рет қаралды 166
Hello World на Ассемблере (x86)
9:34
Псевдо Программист
Рет қаралды 157 М.
Пишем TELEGRAM бота на GO
13:48
Хауди Хо™ - Просто о мире IT!
Рет қаралды 55 М.
GitHub для Начинающих | Что такое Git и GitHub
14:42
Псевдо Программист
Рет қаралды 52 М.
Простой парсинг сайтов на Python | requests, BeautifulSoup, csv
1:11:50
Андрей Андриевский
Рет қаралды 133 М.
100😭🎉 #thankyou
00:28
はじめしゃちょー(hajime)
Рет қаралды 27 МЛН