利用Python实现每日新闻推送的简单逻辑【附接口】

本文将介绍如何使用Python编写简单的逻辑,通过调用API接口实现每日新闻推送功能。

步骤:

  1. 导入所需的库: 在代码的开头,我们需要导入所需的库。通常,我们会使用requests库来发送HTTP请求,以获取新闻数据。
import os
import requests
  1. 设置环境变量【可选】:环境变量是在操作系统或运行环境中设置的全局变量,可以存储一些敏感或配置信息,例如API密钥、访问令牌等。通过使用环境变量,可以将这些敏感信息与代码分离,提高代码的安全性和可维护性。
pushplus_token = os.environ.get('pushplus_token')   #pushplus推送令牌
topic = os.environ.get('topic')   #pushplus群组id
PUSHPLUS_TOKENPushplus 官网申请,免费微信消息推送

在这个例子中,os.environ.get('pushplus_token')os.environ.get('topic')分别获取名为pushplus_tokentopic的环境变量的值。这些环境变量应该在运行代码之前在操作系统或运行环境中进行设置。

获取环境变量的好处是,您可以在不修改代码的情况下,根据需要在不同的环境中设置不同的值。例如,在开发环境和生产环境中可以使用不同的推送令牌和主题,而无需更改代码本身。

通过使用os.environ.get()函数,可以安全地获取环境变量的值。如果环境变量不存在,get()函数将返回None,因此您可以根据需要进行错误处理或设置默认值。

  1. 调用新闻API接口: 新闻API接口是一个提供新闻数据的服务。我们可以使用requests库向API发送HTTP请求,获取新闻数据的响应。根据API提供的文档,我们可以了解如何构造请求,例如指定新闻的类别、时间范围等。
image_url = "https://api.03c3.cn/api/zb"  #图片版本接口
text_url = "https://api.03c3.cn/api/zb?type=text"  #文字版本接口
  1. 解析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返回的纯文本内容作为推送消息的一部分,进行进一步处理和构造推送数据。

  1. 提取新闻内容: 通过解析API响应,我们可以提取出需要的新闻内容,例如新闻标题、摘要和链接等信息。可以将提取的信息存储在适当的数据结构中,例如列表或字典。
  2. 设置推送参数: 在代码中,我们可以定义推送的参数,例如推送标题、内容格式和目标用户等。根据推送服务提供商的要求,我们可以选择合适的参数设置。
  3. 构造推送消息: 使用获取到的新闻信息,我们可以根据推送服务的要求,构造推送消息的格式。可以将新闻标题和链接等信息整合为一条推送消息,以便发送给用户。
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"字段存储了推送消息的内容,它的值是通过格式化字符串的方式将contentimage_url插入到HTML模板中的。其中,content是之前从API获取的新闻内容,image_url是存储图片URL的变量。
  • "template"字段指定了推送消息的模板类型,这里使用了HTML模板。

注意:在代码中有一行注释掉的 "topic": "群组ID" 字段,这是用于指定推送消息发送到指定群组的ID,如果需要发送到特定的群组,可以取消注释并设置相应的群组ID值。

  1. 发送推送请求: 使用推送服务提供商的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 requestspushplus_token = os.environ.get('pushplus_token')
topic = os.environ.get('topic')image_url = "https://api.03c3.cn/api/zb"text_url = "https://api.03c3.cn/api/zb?type=text"text_response = requests.get(text_url)
content = text_response.textpushplus_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: autoon:schedule:- cron: '30 22 * * *' #每天六点半workflow_dispatch: env:pushplus_token: ${{ secrets.PUSHPLUS_TOKEN }} topic: ${{ secrets.TOPIC }}jobs:build:runs-on: ubuntu-lateststeps:- name: Check out the repositoryuses: actions/checkout@v3- name: Set up Python uses: actions/setup-python@v3with: python-version: '3.10'- name: Install dependenciesrun: |python -m pip install --upgrade pippip install requests - name: Run main.pyrun: python main.py  #文件名

仓库地址

点击进入仓库地址,可以直接Fork配置运行

GitHub

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

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/535088.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Codeforces Round 933 (Div. 3) A~D

比赛链接 : codeforces.com/contest/1941 A . Rudolf and the Ticket 直接暴力即可 ; #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \n #define lowbit(x) (x&(-x)) #define sz(a) (int)a.size() #define p…

2024年3月11日 算法刷题记录

2024年3月11日 习题 2.4 Repeater&#xff08;北京大学复试上机题&#xff09; 链接 题目大意 给你一个仅包含一种字符和空格的模板&#xff0c;模板显示如何创建无尽的图片&#xff0c;将字符用作基本元素并将它们放在正确的位置以形成更大的模板&#xff0c;然后不断进行…

AIPC的“名利场”,生产力革命还是市值猛药?

文&#xff5c;刘俊宏 编&#xff5c;王一粟 苹果这回终于不“挤牙膏”了&#xff0c;急不可耐地扎入了AIPC的“名利场”。 就在2月28日&#xff0c;苹果CEO库克还在股东大会上宣称&#xff1a;“目前市面上用于人工智能的电脑&#xff0c;没有比Mac更好的”。仅一周过去&am…

百度AI智能审核

一、介绍 百度内容审核平台&#xff08;Baidu Content Audit Platform&#xff09;是百度推出的一款用于进行内容审核的平台。该平台利用人工智能技术&#xff0c;对用户上传的各类内容进行审核和过滤&#xff0c;以实现内容的合规和安全&#xff0c;可以识别和过滤涉黄、涉政…

Matlab R2021a安装教程(附带免费安装包)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 Matlab简介 Matlab是一种高级技术计算语言和交互式环境&#xff0c;用于算法开发、数据可视化和数值计算。它集成了数学、工程和科…

探索ChatGPT的前沿科技:解锁其在地理信息系统、气候预测、农作物生长等关键领域的创新应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

JVM 重要知识梳理

一、java内存区域 程序计数器&#xff1a;线程私有&#xff0c;唯一一个不会出现outOfMemoryError的内存区域虚拟机栈&#xff1a;线程私有&#xff0c;栈由一个个栈帧组成&#xff0c;而每个栈帧中都拥有&#xff1a;局部变量表、操作数栈、动态链接、方法返回地址。本地方法…

最大极小值与最小极大值(省模拟赛-16568)

我的代码&#xff1a; #include <iostream> using namespace std; int a[1002]{};int main() {int n;cin>>n;for(int i1;i<n;i){cin>>a[i]; }int jixiaoa[1],jidaa[1],max_jixiao0,min_jida10000;for (int i1;i<n;i){if(a[i]<a[i-1]&&a[i]…

day 55 动态规划part15● 392.判断子序列 ● 115.不同的子序列

这道题目算是 编辑距离问题 的入门题目&#xff08;毕竟这里只是涉及到减法&#xff09;&#xff0c;慢慢的&#xff0c;后面就要来解决真正的 编辑距离问题了. 这个相当于求两个序列的最大公共子序列长度&#xff0c;如果等于s的长度&#xff0c;就是t包含s。一遍过。 class …

手势学习

1. 点击手势 Composable fun ClickableSample() {val number remember {mutableStateOf(0)}Text(text number.value.toString(),textAlign TextAlign.Center,modifier Modifier.wrapContentSize().clickable {number.value}.background(Color.LightGray).padding(horizonta…

以102flowers数据集为例训练ResNet50模型

以102flowers数据集为例训练ResNet50模型 使用飞桨高阶API&#xff0c;使用最少的代码量&#xff0c;实现在102flowers数据集训练ResNet50模型。同时可以一条命令修改成Mnist、Cifar10、Cifar100等数据集&#xff0c;换成其它模型也是只需要一句话代码。 数据集介绍 102flowe…

深入理解Apache Commons Pool2池化技术

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在现代软件开发中&#xff0c;为了提高性能和资源利用率&#xff0c;开发者们经常使用池化技术来管理那些创建和销毁代价较高的对…