@dpesnyak94

В чём проблема?

# Импорт нужных библиотек
import requests
from bs4 import BeautifulSoup
import time

# Бесконечный цикл для постоянного парсинга новости
while True:
    # Подключаемся к сайту
    url = requests.get("https://www.belta.by/") 
    soup = BeautifulSoup(url.text, 'lxml')
    # Ищем блок с классом 'mg-grid__col' (1 блок = 1 новость)
    news = soup.find_all('div', class_='tl_item')
    # Присваиваем переменной lastNewItem последнюю новость
    lastNewsItem = news[0].text

    # Если поледняя новость не равна lastNewItem
    if (lastNewsItem != news[0].text): 
        print('Вышла новая новость!')
        # Присваиваем lastNewsItem последнюю новость
        lastNewsItem = news[0].text
        # Пауза 30 секунд
        time.sleep(30) 
    else: # Иначе
        print(False)
        # Пауза 30 секунд
        time.sleep(30)


Здравствуйте! Начал изучать Python и столкнулся с проблемой. Решаю задачку с парсингом новых новостей с портала; новые новости выходят, но скрипт не выполняется. По прежнему выполняется print(Fasle).
Upd. Думаю, проблема в сравнении, видимо, т.к. print(lastNewsItem) прекрасно выполняет свою функцию.
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Внимание вопрос: как это условие может (не) выполниться?
lastNewsItem = news[0].text
if (lastNewsItem != news[0].text):


Можно даже по комментариям прочитать
# Присваиваем переменной lastNewItem последнюю новость
# ...
# Если поледняя новость не равна lastNewItem


Сначала нужно проверять, что lastnews (прошлая новость) не равна news[0].text (актуальная новость), и затем уже, если они не равны, присваивать lastnews значение из news[0].text

В общем удалить надо первое присваивание lastNewsItem, которое лежит вне блока if
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
yupiter7575
@yupiter7575
Python программист
Мне кажется в BeautifulSoup по классу ищут так:
div = soup.find_all(attrs={'class':'class_name'})
по крайней мере в доках так написано
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы