利用Python實現(xiàn)每日新聞推送
前言
本文將介紹如何使用Python編寫簡單的邏輯,通過調(diào)用API接口實現(xiàn)每日新聞推送功能。
步驟
1.導(dǎo)入所需的庫: 在代碼的開頭,我們需要導(dǎo)入所需的庫。通常,我們會使用requests庫來發(fā)送HTTP請求,以獲取新聞數(shù)據(jù)。
import os import requests
2.設(shè)置環(huán)境變量【可選】:環(huán)境變量是在操作系統(tǒng)或運行環(huán)境中設(shè)置的全局變量,可以存儲一些敏感或配置信息,例如API密鑰、訪問令牌等。通過使用環(huán)境變量,可以將這些敏感信息與代碼分離,提高代碼的安全性和可維護性。
pushplus_token = os.environ.get('pushplus_token') #pushplus推送令牌 topic = os.environ.get('topic') #pushplus群組id
PUSHPLUS_TOKEN
Pushplus 官網(wǎng)申請,免費微信消息推送
在這個例子中,os.environ.get('pushplus_token')和os.environ.get('topic')分別獲取名為pushplus_token和topic的環(huán)境變量的值。這些環(huán)境變量應(yīng)該在運行代碼之前在操作系統(tǒng)或運行環(huán)境中進行設(shè)置。
獲取環(huán)境變量的好處是,您可以在不修改代碼的情況下,根據(jù)需要在不同的環(huán)境中設(shè)置不同的值。例如,在開發(fā)環(huán)境和生產(chǎn)環(huán)境中可以使用不同的推送令牌和主題,而無需更改代碼本身。
通過使用os.environ.get()函數(shù),可以安全地獲取環(huán)境變量的值。如果環(huán)境變量不存在,get()函數(shù)將返回None,因此您可以根據(jù)需要進行錯誤處理或設(shè)置默認(rèn)值。
3.調(diào)用新聞API接口: 新聞API接口是一個提供新聞數(shù)據(jù)的服務(wù)。我們可以使用requests庫向API發(fā)送HTTP請求,獲取新聞數(shù)據(jù)的響應(yīng)。根據(jù)API提供的文檔,我們可以了解如何構(gòu)造請求,例如指定新聞的類別、時間范圍等。
image_url = "https://api.03c3.cn/zb/" #圖片版本接口 text_url = "https://api.03c3.cn/zb/text.php" #文字版本接口
4.解析API響應(yīng): 獲取到API的響應(yīng)后,我們需要使用適當(dāng)?shù)姆椒▽ζ溥M行解析。通常情況下,API響應(yīng)會以JSON格式返回,我們可以使用Python的內(nèi)置json庫將其解析為可操作的數(shù)據(jù)。
text_response = requests.get(text_url) content = text_response.text
在requests庫中,text屬性是一個返回響應(yīng)內(nèi)容的屬性。當(dāng)使用requests.get()方法發(fā)送GET請求并獲取到響應(yīng)后,可以通過text屬性獲取響應(yīng)內(nèi)容的純文本形式。
在這個特定的例子中,text_response.text將獲取到的API響應(yīng)內(nèi)容以純文本形式賦值給content變量,以便后續(xù)使用。這樣可以將API返回的純文本內(nèi)容作為推送消息的一部分,進行進一步處理和構(gòu)造推送數(shù)據(jù)。
5.提取新聞內(nèi)容: 通過解析API響應(yīng),我們可以提取出需要的新聞內(nèi)容,例如新聞標(biāo)題、摘要和鏈接等信息??梢詫⑻崛〉男畔⒋鎯υ谶m當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)中,例如列表或字典。
6.設(shè)置推送參數(shù): 在代碼中,我們可以定義推送的參數(shù),例如推送標(biāo)題、內(nèi)容格式和目標(biāo)用戶等。根據(jù)推送服務(wù)提供商的要求,我們可以選擇合適的參數(shù)設(shè)置。
7.構(gòu)造推送消息: 使用獲取到的新聞信息,我們可以根據(jù)推送服務(wù)的要求,構(gòu)造推送消息的格式??梢詫⑿侣剺?biāo)題和鏈接等信息整合為一條推送消息,以便發(fā)送給用戶。
pushplus_data = { "token": pushplus_token, "title": "每天60秒讀懂世界", "content": "{}<br/><img src='{}' />".format(content,image_url), # "topic": "群組ID", "template": "html" }
pushplus_data字典定義了推送消息的參數(shù)和內(nèi)容。其中:
- "token"字段存儲了推送服務(wù)的訪問令牌,它的值是之前從環(huán)境變量中獲取的pushplus_token。
- "title"字段存儲了推送消息的標(biāo)題,它的值是固定的字符串 "每天60秒讀懂世界"。
- "content"字段存儲了推送消息的內(nèi)容,它的值是通過格式化字符串的方式將content和image_url插入到HTML模板中的。其中,content是之前從API獲取的新聞內(nèi)容,image_url是存儲圖片URL的變量。
- "template"字段指定了推送消息的模板類型,這里使用了HTML模板。
注意:在代碼中有一行注釋掉的 "topic": "群組ID" 字段,這是用于指定推送消息發(fā)送到指定群組的ID,如果需要發(fā)送到特定的群組,可以取消注釋并設(shè)置相應(yīng)的群組ID值。
8.發(fā)送推送請求: 使用推送服務(wù)提供商的API,我們可以通過發(fā)送HTTP請求,將構(gòu)造好的推送消息發(fā)送給目標(biāo)用戶。推送服務(wù)將根據(jù)提供的參數(shù),將推送消息推送到用戶的設(shè)備上。
pushplus_url = "https://www.pushplus.plus//send" requests.post(pushplus_url, json=pushplus_data)
pushplus_url變量存儲了推送服務(wù)提供商的API地址,即要發(fā)送POST請求的目標(biāo)URL。
最后,使用requests.post()方法向pushplus_url發(fā)送POST請求,將pushplus_data以JSON格式作為請求的正文進行傳遞。這樣,推送服務(wù)提供商的API將根據(jù)傳遞的參數(shù)和內(nèi)容,將推送消息發(fā)送給目標(biāo)用戶。
完整代碼
import os import requests pushplus_token = os.environ.get('pushplus_token') topic = os.environ.get('topic') image_url = "https://api.03c3.cn/zb/" text_url = "https://api.03c3.cn/zb/text.php" text_response = requests.get(text_url) content = text_response.text pushplus_url = "https://www.pushplus.plus//send" pushplus_data = { "token": pushplus_token, "title": "每天60秒讀懂世界", "content": "{}<br/><img src='{}' />".format(content,image_url), # "topic": "群組ID", "template": "html" } requests.post(pushplus_url, json=pushplus_data)
工作流文件
name: auto on: schedule: - cron: '30 22 * * *' #每天六點半 workflow_dispatch: env: pushplus_token: ${{ secrets.PUSHPLUS_TOKEN }} topic: ${{ secrets.TOPIC }} jobs: build: runs-on: ubuntu-latest steps: - name: Check out the repository uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v3 with: python-version: '3.10' - name: Install dependencies run: | python -m pip install --upgrade pip pip install requests - name: Run main.py run: python main.py #文件名
希望本文能夠幫助您了解如何利用Python實現(xiàn)每日新聞推送功能的簡單邏輯。
到此這篇關(guān)于利用Python實現(xiàn)每日新聞推送的文章就介紹到這了,更多相關(guān)Python新聞推送內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中concurrent.futures的具體使用
concurrent.futures是Python標(biāo)準(zhǔn)庫的一部分,提供了ThreadPoolExecutor和ProcessPoolExecutor兩種執(zhí)行器,用于管理線程池和進程池,通過這些執(zhí)行器,可以簡化多線程和多進程任務(wù)的管理,提高程序執(zhí)行效率2024-09-09python GUI庫圖形界面開發(fā)之PyQt5中QMainWindow, QWidget以及QDialog的區(qū)別和選擇
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5中QMainWindow, QWidget以及QDialog的區(qū)別和選擇,需要的朋友可以參考下2020-02-0214個用Python實現(xiàn)的Excel常用操作總結(jié)
自從學(xué)了Python后就逼迫自己不用Excel,所有操作用Python實現(xiàn)。目的是鞏固Python,與增強數(shù)據(jù)處理能力。本文為大家總結(jié)了14個用Python實現(xiàn)的Excel常用操作,需要的可以參考一下2022-06-06python實現(xiàn)linux下使用xcopy的方法
這篇文章主要介紹了python實現(xiàn)linux下使用xcopy的方法,可實現(xiàn)模仿windows下的xcopy命令功能,需要的朋友可以參考下2015-06-06