利用Python實現每日新聞推送
前言
本文將介紹如何使用Python編寫簡單的邏輯,通過調用API接口實現每日新聞推送功能。


步驟
1.導入所需的庫: 在代碼的開頭,我們需要導入所需的庫。通常,我們會使用requests庫來發(fā)送HTTP請求,以獲取新聞數據。
import os import requests
2.設置環(huán)境變量【可選】:環(huán)境變量是在操作系統(tǒng)或運行環(huán)境中設置的全局變量,可以存儲一些敏感或配置信息,例如API密鑰、訪問令牌等。通過使用環(huán)境變量,可以將這些敏感信息與代碼分離,提高代碼的安全性和可維護性。
pushplus_token = os.environ.get('pushplus_token') #pushplus推送令牌
topic = os.environ.get('topic') #pushplus群組idPUSHPLUS_TOKEN
Pushplus 官網申請,免費微信消息推送
在這個例子中,os.environ.get('pushplus_token')和os.environ.get('topic')分別獲取名為pushplus_token和topic的環(huán)境變量的值。這些環(huán)境變量應該在運行代碼之前在操作系統(tǒng)或運行環(huán)境中進行設置。
獲取環(huán)境變量的好處是,您可以在不修改代碼的情況下,根據需要在不同的環(huán)境中設置不同的值。例如,在開發(fā)環(huán)境和生產環(huán)境中可以使用不同的推送令牌和主題,而無需更改代碼本身。
通過使用os.environ.get()函數,可以安全地獲取環(huán)境變量的值。如果環(huán)境變量不存在,get()函數將返回None,因此您可以根據需要進行錯誤處理或設置默認值。
3.調用新聞API接口: 新聞API接口是一個提供新聞數據的服務。我們可以使用requests庫向API發(fā)送HTTP請求,獲取新聞數據的響應。根據API提供的文檔,我們可以了解如何構造請求,例如指定新聞的類別、時間范圍等。
image_url = "https://api.03c3.cn/zb/" #圖片版本接口 text_url = "https://api.03c3.cn/zb/text.php" #文字版本接口
4.解析API響應: 獲取到API的響應后,我們需要使用適當的方法對其進行解析。通常情況下,API響應會以JSON格式返回,我們可以使用Python的內置json庫將其解析為可操作的數據。
text_response = requests.get(text_url) content = text_response.text
在requests庫中,text屬性是一個返回響應內容的屬性。當使用requests.get()方法發(fā)送GET請求并獲取到響應后,可以通過text屬性獲取響應內容的純文本形式。
在這個特定的例子中,text_response.text將獲取到的API響應內容以純文本形式賦值給content變量,以便后續(xù)使用。這樣可以將API返回的純文本內容作為推送消息的一部分,進行進一步處理和構造推送數據。
5.提取新聞內容: 通過解析API響應,我們可以提取出需要的新聞內容,例如新聞標題、摘要和鏈接等信息。可以將提取的信息存儲在適當的數據結構中,例如列表或字典。
6.設置推送參數: 在代碼中,我們可以定義推送的參數,例如推送標題、內容格式和目標用戶等。根據推送服務提供商的要求,我們可以選擇合適的參數設置。
7.構造推送消息: 使用獲取到的新聞信息,我們可以根據推送服務的要求,構造推送消息的格式??梢詫⑿侣剺祟}和鏈接等信息整合為一條推送消息,以便發(fā)送給用戶。
pushplus_data = {
"token": pushplus_token,
"title": "每天60秒讀懂世界",
"content": "{}<br/><img src='{}' />".format(content,image_url),
# "topic": "群組ID",
"template": "html"
}pushplus_data字典定義了推送消息的參數和內容。其中:
- "token"字段存儲了推送服務的訪問令牌,它的值是之前從環(huán)境變量中獲取的pushplus_token。
- "title"字段存儲了推送消息的標題,它的值是固定的字符串 "每天60秒讀懂世界"。
- "content"字段存儲了推送消息的內容,它的值是通過格式化字符串的方式將content和image_url插入到HTML模板中的。其中,content是之前從API獲取的新聞內容,image_url是存儲圖片URL的變量。
- "template"字段指定了推送消息的模板類型,這里使用了HTML模板。
注意:在代碼中有一行注釋掉的 "topic": "群組ID" 字段,這是用于指定推送消息發(fā)送到指定群組的ID,如果需要發(fā)送到特定的群組,可以取消注釋并設置相應的群組ID值。
8.發(fā)送推送請求: 使用推送服務提供商的API,我們可以通過發(fā)送HTTP請求,將構造好的推送消息發(fā)送給目標用戶。推送服務將根據提供的參數,將推送消息推送到用戶的設備上。
pushplus_url = "https://www.pushplus.plus//send" requests.post(pushplus_url, json=pushplus_data)
pushplus_url變量存儲了推送服務提供商的API地址,即要發(fā)送POST請求的目標URL。
最后,使用requests.post()方法向pushplus_url發(fā)送POST請求,將pushplus_data以JSON格式作為請求的正文進行傳遞。這樣,推送服務提供商的API將根據傳遞的參數和內容,將推送消息發(fā)送給目標用戶。
完整代碼
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實現每日新聞推送功能的簡單邏輯。
到此這篇關于利用Python實現每日新聞推送的文章就介紹到這了,更多相關Python新聞推送內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python中concurrent.futures的具體使用
concurrent.futures是Python標準庫的一部分,提供了ThreadPoolExecutor和ProcessPoolExecutor兩種執(zhí)行器,用于管理線程池和進程池,通過這些執(zhí)行器,可以簡化多線程和多進程任務的管理,提高程序執(zhí)行效率2024-09-09
python GUI庫圖形界面開發(fā)之PyQt5中QMainWindow, QWidget以及QDialog的區(qū)別和選擇
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5中QMainWindow, QWidget以及QDialog的區(qū)別和選擇,需要的朋友可以參考下2020-02-02

