Сканирование в Интернете последних новостей путем проверки добавления новых новостей - PullRequest
0 голосов
/ 07 апреля 2020
from bs4 import BeautifulSoup
import requests
import smtplib
import time


def live_news():
    source = requests.get(
    "https://economictimes.indiatimes.com/news/politics-and-nation/coronavirus- 
     cases-in-india-live-news-latest-updates-april6/liveblog/75000925.cms"
    ).text
   soup = BeautifulSoup(source, "lxml")

   livepage = soup.find("div", class_="pageliveblog")
   each_story = livepage.find("div", class_="eachStory")
   news_time = each_story.span.text
   new_news = each_story.div.text[8::]
   print(f"{news_time}\n{new_news}")

while(True):
    live_news()
    time.sleep(300) 

Итак, в основном я пытаюсь почерпнуть последние обновления новостей с новостного сайта. То, что я ищу, - это печатать только последние новости вместе со временем, а не заголовки всех новостей. С помощью приведенного выше кода я могу получать последние обновления новостей, и программа будет отправлять запрос на сервер каждые 5 минут (это задержка, которую я дал). Но проблема здесь в том, что он напечатает те же ранее напечатанные новости снова через 5 минут, если на странице не будет обновлено никаких других последних новостей. Я не хочу, чтобы программа снова печатала те же новости, вместо этого я хотел бы добавить некоторые условия в программу. Так что Он будет проверять каждые 5 минут, есть ли новые обновления или те же самые предыдущие новости. Если есть какие-либо новые обновления, он должен печатать его, иначе не должен.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

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

0 голосов
/ 07 апреля 2020

Решение, которое я могу придумать, - это выражение if. При первом запуске вашего кода переменная check_last_time становится пустой, а когда вы вызываете live_news(), ей присваивается значение news_time.

После этого каждый раз, когда вызывается live_news(), он сначала проверяет, не совпадает ли текущий news_time с check_last_time, а если нет, то печатает новую историю:

# Initialise the variable outside of the function
check_last_time = [] 
def live_news():
    ...
    ...
    # Check to see with the times don't match
    if news_time != check_last_time:
        print(f"{news_time}\n{new_news}")
        # Update the variable with the new time
        check_last_time = news_time
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...