import requests import timefrom bs4 import BeautifulSoup def sina(): is_first = True task_q = [] # 本地存儲新聞 task_time = [] while True: data_list = getNews() if is_first: task_q = data_list for data in data_list: print(data['n_time'],data['n_info']) time.sleep(0.5) task_time.append(data['n_time']) is_first = False else: for data in data_list: if data['n_time'] in task_time: pass else: task_time.append(data['n_time']) print('-'*30) print('新消息',data['n_time'],data['n_info']) time.sleep(5) def getNews(): # 獲取新聞函數 news_list =[] base_url = 'http://live.sina.com.cn/zt/f/v/finance/globalnews1' response = requests.get(base_url) response.encoding = response.apparent_encoding html = response.text html_bs4 = BeautifulSoup(html,'lxml') info_list = (html_bs4.find_all('div',{'data-nick':'fin_圖文直播'})) for info in info_list: # 獲取頁面中自動刷新的新聞 n_time = info.select('p[class="bd_i_time_c"]')[0].get_text() # 新聞時間及內容 n_info = info.select('p[class="bd_i_txt_c"]')[0].get_text() data = { 'n_time': n_time, 'n_info': n_info } news_list.append(data) return news_list[::-1] # 這里倒序,這樣打印時才會先打印舊新聞,后打印新新聞 if __name__ == '__main__': sina() ''' 1 先得到頁面的15條新聞 2 15條新聞放到列表並傳遞 3 每隔30秒請求一次頁面,界面中時間與列表中的時間對照,不相同則讀取 '''