Имеется вот такой код:
import telebot
import config
from time import sleep
from bs4 import BeautifulSoup
import requests
bot = telebot.TeleBot(config.token)
@bot.message_handler(commands = ['start'])
def start(message):
html = requests.get("https://www.rbc.ru/short_news")
soup = BeautifulSoup(html.text, 'lxml')
title = soup.find('span', class_ = 'item__title-wrap')
href = soup.find('div', class_ = 'item__wrap l-col-center')
while html.status_code == 200:
for t in title.find_all('span', class_ = 'item__title rm-cm-item-text')[:1]:
answer_title = t.text.strip()
print(answer_title)
for h in href.find_all('a', class_ = 'item__link')[:1]:
answer_href = h.get('href')
print(answer_href)
bot.send_message(message.chat.id, f'{answer_title}\n\n{answer_href}')
sleep(5)
if __name__ == '__main__':
bot.polling(none_stop = True)
Он парсит новости ленты с РБК (заголовок + ссылка), точнее последнюю новость.
У меня два вопроса.
1. Как спарсить не последнюю новость, а любую (например, предпоследнюю).
2. И как сделать проверку новых новостей, чтобы программа понимала, что вышла новая новость и сразу парсила её.
P.S. Ещё я обнаружил, что при таймере парсится одна и та же новость. То есть программа запущена, новость спарсилась и через указанный интервал времени, даже если на сайте появились новые новости будет парсится эта же новость, пока не перезапущу программу.