利用Python实现每日新闻推送
前言
本文将介绍如何使用Python编写简单的逻辑,通过调用API接口实现每日新闻推送功能。
步骤
1.导入所需的库: 在代码的开头,我们需要导入所需的库。通常,我们会使用requests库来发送HTTP请求,以获取新闻数据。
import os import requests
2.设置环境变量【可选】:环境变量是在操作系统或运行环境中设置的全局变量,可以存储一些敏感或配置信息,例如API密钥、访问令牌等。通过使用环境变量,可以将这些敏感信息与代码分离,提高代码的安全性和可维护性。
pushplus_token = os.environ.get('pushplus_token') #pushplus推送令牌 topic = os.environ.get('topic') #pushplus群组id
PUSHPLUS_TOKEN
Pushplus 官网申请,免费微信消息推送
在这个例子中,os.environ.get('pushplus_token')和os.environ.get('topic')分别获取名为pushplus_token和topic的环境变量的值。这些环境变量应该在运行代码之前在操作系统或运行环境中进行设置。
获取环境变量的好处是,您可以在不修改代码的情况下,根据需要在不同的环境中设置不同的值。例如,在开发环境和生产环境中可以使用不同的推送令牌和主题,而无需更改代码本身。
通过使用os.environ.get()函数,可以安全地获取环境变量的值。如果环境变量不存在,get()函数将返回None,因此您可以根据需要进行错误处理或设置默认值。
3.调用新闻API接口: 新闻API接口是一个提供新闻数据的服务。我们可以使用requests库向API发送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()方法发送GET请求并获取到响应后,可以通过text属性获取响应内容的纯文本形式。
在这个特定的例子中,text_response.text将获取到的API响应内容以纯文本形式赋值给content变量,以便后续使用。这样可以将API返回的纯文本内容作为推送消息的一部分,进行进一步处理和构造推送数据。
5.提取新闻内容: 通过解析API响应,我们可以提取出需要的新闻内容,例如新闻标题、摘要和链接等信息。可以将提取的信息存储在适当的数据结构中,例如列表或字典。
6.设置推送参数: 在代码中,我们可以定义推送的参数,例如推送标题、内容格式和目标用户等。根据推送服务提供商的要求,我们可以选择合适的参数设置。
7.构造推送消息: 使用获取到的新闻信息,我们可以根据推送服务的要求,构造推送消息的格式。可以将新闻标题和链接等信息整合为一条推送消息,以便发送给用户。
pushplus_data = { "token": pushplus_token, "title": "每天60秒读懂世界", "content": "{}<br/><img src='{}' />".format(content,image_url), # "topic": "群组ID", "template": "html" }
pushplus_data字典定义了推送消息的参数和内容。其中:
- "token"字段存储了推送服务的访问令牌,它的值是之前从环境变量中获取的pushplus_token。
- "title"字段存储了推送消息的标题,它的值是固定的字符串 "每天60秒读懂世界"。
- "content"字段存储了推送消息的内容,它的值是通过格式化字符串的方式将content和image_url插入到HTML模板中的。其中,content是之前从API获取的新闻内容,image_url是存储图片URL的变量。
- "template"字段指定了推送消息的模板类型,这里使用了HTML模板。
注意:在代码中有一行注释掉的 "topic": "群组ID" 字段,这是用于指定推送消息发送到指定群组的ID,如果需要发送到特定的群组,可以取消注释并设置相应的群组ID值。
8.发送推送请求: 使用推送服务提供商的API,我们可以通过发送HTTP请求,将构造好的推送消息发送给目标用户。推送服务将根据提供的参数,将推送消息推送到用户的设备上。
pushplus_url = "https://www.pushplus.plus//send" requests.post(pushplus_url, json=pushplus_data)
pushplus_url变量存储了推送服务提供商的API地址,即要发送POST请求的目标URL。
最后,使用requests.post()方法向pushplus_url发送POST请求,将pushplus_data以JSON格式作为请求的正文进行传递。这样,推送服务提供商的API将根据传递的参数和内容,将推送消息发送给目标用户。
完整代码
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新闻推送内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python爬虫:Request Payload和Form Data的简单区别说明
这篇文章主要介绍了Python爬虫:Request Payload和Form Data的简单区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-04-04Python中使用conda install还是pip install好
这篇文章主要给大家介绍了关于Python中使用conda install还是pip install好的相关资料,conda install 和 pip install 都是Python的包管理工具,文中介绍的非常详细,需要的朋友可以参考下2023-09-09PyTorch中torch.matmul()函数常见用法总结
torch.matmul()也是一种类似于矩阵相乘操作的tensor连乘操作。但是它可以利用python中的广播机制,处理一些维度不同的tensor结构进行相乘操作,这篇文章主要介绍了PyTorch中torch.matmul()函数用法总结,需要的朋友可以参考下2023-04-04pytorch中nn.Sequential和nn.Module的区别与选择方案
在 PyTorch 中,构建神经网络模型有两种主要方式:nn.Sequential 和 nn.Module,它们各有优缺点,适用于不同的场景,下面通过示例给大家讲解pytorch中nn.Sequential和nn.Module的区别与选择方案,感兴趣的朋友一起看看吧2024-06-06
最新评论