利用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监控键盘输入实例代码

    python监控键盘输入实例代码

    这篇文章主要介绍了python监控键盘输入实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 如何在python中写hive脚本

    如何在python中写hive脚本

    这篇文章主要介绍了如何在python中写hive脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python把PDF表格完整转换成Excel的小白教程

    Python把PDF表格完整转换成Excel的小白教程

    本文通过一个完整的Python示例,详细介绍了如何将多页PDF表格转换为Excel文件,文中包括整体思路、核心代码解析、示例PDF模板及预期处理结果等内容,旨在帮助用户理解和掌握PDF表格处理技巧,需要的朋友可以参考下
    2026-04-04
  • Python数据结构与算法之字典树实现方法示例

    Python数据结构与算法之字典树实现方法示例

    这篇文章主要介绍了Python数据结构与算法之字典树实现方法,可实现针对单词出现次数的统计功能,涉及Python树结构的定义、遍历及统计等相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • Python中虚拟环境依赖问题的解决方案详解

    Python中虚拟环境依赖问题的解决方案详解

    在Python开发中,虚拟环境和依赖管理是必不可少的工具,本文将以一个实际案例为基础,详细分析如何解决Python虚拟环境中的依赖问题,希望对大家有所帮助
    2025-03-03
  • Python实现基于Fasttext的商品评论数据分类的操作流程

    Python实现基于Fasttext的商品评论数据分类的操作流程

    这篇文章主要介绍了Python实现基于Fasttext的商品评论数据分类,今天使用的fasttext更像是一个集成的库,把向量化和分类一起做掉了,这个对于使用层面来讲就更方便了一些,需要的朋友可以参考下
    2022-06-06
  • python字典键值对的添加和遍历方法

    python字典键值对的添加和遍历方法

    下面小编就为大家带来一篇python字典键值对的添加和遍历方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • Python使用zipfile解压文件中文乱码问题的具体原因和解决方案

    Python使用zipfile解压文件中文乱码问题的具体原因和解决方案

    在 Python 中使用 zipfile 模块解压文件时,中文文件名乱码通常是由于 ZIP 文件的编码标准不统一 导致的,本文给大家介绍了详细的原因和解决方案,需要的朋友可以参考下
    2025-09-09
  • 使用Python画了一棵圣诞树的实例代码

    使用Python画了一棵圣诞树的实例代码

    这篇文章主要介绍了使用Python画了一棵圣诞树的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Python 网络编程说明

    Python 网络编程说明

    socket 是网络连接端点。
    2009-08-08

最新评论