利用Python实现每日新闻推送

 更新时间:2023年06月18日 10:29:29   作者:ooyq  
这篇文章主要为大家详细介绍了如何使用Python编写简单的逻辑,通过调用API接口实现每日新闻推送功能,感兴趣的小伙伴可以跟随小编一起学习一下

前言

本文将介绍如何使用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  #文件名

仓库地址,可以直接Fork配置运行

希望本文能够帮助您了解如何利用Python实现每日新闻推送功能的简单逻辑。

到此这篇关于利用Python实现每日新闻推送的文章就介绍到这了,更多相关Python新闻推送内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中concurrent.futures的具体使用

    python中concurrent.futures的具体使用

    concurrent.futures是Python标准库的一部分,提供了ThreadPoolExecutor和ProcessPoolExecutor两种执行器,用于管理线程池和进程池,通过这些执行器,可以简化多线程和多进程任务的管理,提高程序执行效率
    2024-09-09
  • Python学习资料

    Python学习资料

    Python学习资料...
    2007-02-02
  • Django ORM F对象和Q对象查询

    Django ORM F对象和Q对象查询

    Django提供了两个非常有用的工具:F对象和Q对象,方便了在一些特殊场景下的查询过程,这篇文章主要介绍了Django ORM F对象和Q对象查询,需要的朋友可以参考下
    2022-10-10
  • Jupyter notebook如何修改平台字体

    Jupyter notebook如何修改平台字体

    这篇文章主要介绍了Jupyter notebook如何修改平台字体,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python语法学习之进程池与进程锁详解

    Python语法学习之进程池与进程锁详解

    这篇文章主要为大家介绍了Python进程中两个重要的知识点:进程池与进程锁,文中通过示例详细为大家讲解了二者的使用,感兴趣的可以了解下
    2022-04-04
  • python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择

    python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择

    这篇文章主要介绍了python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择,需要的朋友可以参考下
    2020-02-02
  • 14个用Python实现的Excel常用操作总结

    14个用Python实现的Excel常用操作总结

    自从学了Python后就逼迫自己不用Excel,所有操作用Python实现。目的是巩固Python,与增强数据处理能力。本文为大家总结了14个用Python实现的Excel常用操作,需要的可以参考一下
    2022-06-06
  • Python批量生成幻影坦克图片实例代码

    Python批量生成幻影坦克图片实例代码

    这篇文章主要给大家介绍了关于如何利用Python批量生成幻影坦克图片的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • Python虚拟环境conda的安装使用教程

    Python虚拟环境conda的安装使用教程

    在性能和资源占用方面,venv 通常更适合轻量级项目、纯Python应用以及对资源敏感的场景,其简单快速的特点使得环境创建和管理更为高效,这篇文章主要介绍了Python虚拟环境conda的安装使用教程,需要的朋友可以参考下
    2024-03-03
  • python实现linux下使用xcopy的方法

    python实现linux下使用xcopy的方法

    这篇文章主要介绍了python实现linux下使用xcopy的方法,可实现模仿windows下的xcopy命令功能,需要的朋友可以参考下
    2015-06-06

最新评论