1. 程式人生 > 其它 >1、獲取5000條,存redis 獲取新聞的 2、獲取一條,傳送到群裡,並且把這條資料,致為已傳送 3、直到5000條件都發送完,

1、獲取5000條,存redis 獲取新聞的 2、獲取一條,傳送到群裡,並且把這條資料,致為已傳送 3、直到5000條件都發送完,

 1 #思路
 2 #1、每次傳送的時候都去查一條,記錄傳送的條數
 3 #2、提前取n條,5000,
 4 import requests,json,time
 5 from day8.homework import const,utlis
 6 import schedule
 7 
 8 
 9 #1、獲取5000條,存redis  獲取新聞的
10 #2、獲取一條,傳送到群裡,並且把這條資料,致為已傳送
11 #3、直到5000條件都發送完,
12 def get_news(page,limit=const.news_limit):
13     print("開始獲取新聞")
14     data = {"
page":page,"count":limit} 15 req = requests.post(const.news_url,data) 16 news_list = req.json().get("result") 17 print("獲取新聞結束,共%s條"% len(news_list)) 18 return news_list 19 20 def save_news_to_redis(news_list): 21 print("開始儲存新聞到redis") 22 r = utlis.get_redis() 23 for news in
news_list: 24 news["status"] = 0 25 news = json.dumps(news) 26 r.lpush(const.news_list_key,news) 27 print("%s儲存完成" % news) 28 print("所有新聞儲存redis完成") 29 30 31 def format_msg(news): 32 news.pop("image") 33 msg = """ 34 新聞標題:{title} 35 詳情:{path} 36 新聞時間:{passtime}
37 """.format_map(news) 38 return msg 39 40 def send_msg(): 41 r = utlis.get_redis() 42 index = r.get(const.news_index_key) #1 5000 43 if not index or int(index)>const.news_limit: 44 page = int(r.get(const.news_page_key)) if r.get(const.news_page_key) else 1 45 index = 1 46 news_list = get_news(page) 47 save_news_to_redis(news_list) 48 r.set(const.news_page_key,page+1) 49 news = r.lindex(const.news_list_key,index) 50 news = json.loads(news) 51 news["status"] = 1 #把狀態改成已傳送 52 msg = format_msg(news) 53 utlis.send_dd_msg(msg) 54 r.lset(const.news_list_key,index,json.dumps(news)) #修改傳送狀態 55 r.set(const.news_index_key,int(index)+1) 56 print("======",msg) 57 print("訊息傳送完成") 58 59 if __name__ == '__main__': 60 while True: 61 send_msg() 62 time.sleep(60*60)