Python:通过接口获取公众号的文章列表(但是开发文档没有这个接口)

📚博客主页:knighthood2001
公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下)
🎃知识星球:【认知up吧|成长|副业】介绍
❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️
🙏笔者水平有限,欢迎各位大佬指点,相互学习进步!

看文档!看文档!看文档!

https://developers.weixin.qq.com/doc/offiaccount/Publish/Get_publication_records.html

在这里插入图片描述

我本来想通过微信公众平台的接口,获取群发的公众号文章链接,但是结果如下:

在这里插入图片描述

本应该返回包含文章链接的内容,但是是个空。


经过多次测试,我放弃了,然后在网上查了一下,说是没有获取群发文章列表的API。
在这里插入图片描述

因此这篇文章,就算是废了。只能用来记录一下,如何看官方文档,然后写例子。


获取access_token

Python:获取微信公众号的access_token
获取公众号的access_token可以看上面这一篇。

这篇文章对获取access_token进行封装了一下,因为你需要判断是否会出现其他错误,因此你需要if去判断。

APPID = "你的APPID"
APPSECRET = "你的APPSECRET"
def get_access_token():# 构造请求的URLurl = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={APPSECRET}"response = requests.get(url)return_json = response.json()if 'errcode' in return_json:if return_json["errcode"] == '40164':print("IP白名单未配置:", return_json["errmsg"])return Noneelse:print("获取access_token失败,报错信息:", return_json["errmsg"])return Noneelse:access_token = response.json()["access_token"]return access_token

比如下面的第一行,就是这个代码打印的,可以方便大家看没有配置的IP(不需要IP工具去查找本机IP)
在这里插入图片描述

上面这个函数成功运行后,不出其他错误,你就能得到access_token

获取稳定的access_token

获取稳定的access_token,其实反而更加简单。

只需要构造一个请求体。

def get_stable_access_token():# 构造请求的URLurl = "https://api.weixin.qq.com/cgi-bin/stable_token"data = {"grant_type": "client_credential","appid": APPID,"secret": APPSECRET,"force_refresh": False}response = requests.post(url, data=json.dumps(data))access_token = response.json()["access_token"]print('access_token:', access_token)return access_token

获取文章列表

然后看一下微信公众平台开放文档。

在这里插入图片描述

可以看到,需要access_tokenoffsetcount

但是,微信公众平台的API要求指定获取素材的类型。type字段用于告诉微信服务器你想要获取哪种类型的素材。在这个上下文中,news表示你想要获取图文消息列表。

微信公众平台提供了多种类型的素材,包括图文(news)图片(image)语音(voice)视频(video)等。当你调用接口时,你需要明确指定你想要获取的素材类型,这样微信服务器才能返回正确的数据。

access_token是需要放在API里面。

def get_article_list(count=10):access_token = get_access_token()# access_token = get_stable_access_token()print('access_token:', access_token)# 构造获取文章列表的URLarticle_url = f"https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token={access_token}"# 构造请求体data = {"type": "news","offset": 0,"count": count}# 发送POST请求获取文章列表response = requests.post(article_url, json=data)# response = requests.post(article_url, data=json.dumps(data))print(response.json())# 解析返回的JSON数据# articles = response.json()["item"]# return articles

因此,我构造了这样一个函数。

首先就是构造API网址。将access_token加进去。

article_url = f"https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token={access_token}"

然后构造请求体

data里面就是你需要放的参数,参数对了才可以得到指定的内容。count就是你要获取的文章数量。

然后发送post请求。下面这两种方式都是可以的。

response = requests.post(article_url, json=data)

response = requests.post(article_url, data=json.dumps(data))

json.dumps 是 Python 的 json 模块中的一个函数,用于将 Python 对象转换(或序列化)为 JSON 格式的字符串。这个函数非常有用,当你需要将 Python 数据结构(如字典、列表、元组等)转换为 JSON 格式的文本时,你可以使用它。

全文的代码

import requests
import json
APPID = "wx465ccee8c1ea66f5"
APPSECRET = "b9d387d8ada1e82a69c809b7fc8ea2e7"# APPID = "你的APPID"
# APPSECRET = "你的APPSECRET"
def get_access_token():# 构造请求的URLurl = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={APPSECRET}"response = requests.get(url)return_json = response.json()if 'errcode' in return_json:if return_json["errcode"] == '40164':print("IP白名单未配置:", return_json["errmsg"])return Noneelse:print("获取access_token失败,报错信息:", return_json["errmsg"])return Noneelse:access_token = response.json()["access_token"]return access_token# access_token = "access_token 80_U6eqICBzuXntzzICOHBEQrKe4n4lH2MtMn-69791Kx1fjsQ28V2RkpSIuGrbhA2LKC2iGIAVCHvLE30k8Dli-Q3try69bR0UQihKi7hO_aIG0Q5HRI_kxAZcfOIFITdABAMPA"def get_article_list(count=10):access_token = get_access_token()# access_token = get_stable_access_token()print('access_token:', access_token)# 构造获取文章列表的URLarticle_url = f"https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token={access_token}"# 构造请求体data = {"type": "news","offset": 0,"count": count}# 发送POST请求获取文章列表response = requests.post(article_url, json=data)# response = requests.post(article_url, data=json.dumps(data))print(response.json())# 解析返回的JSON数据# articles = response.json()["item"]# return articlesdef get_stable_access_token():"""获取稳定的access_tokenArgs:无Returns:str: 返回稳定的access_token"""# 构造请求的URLurl = "https://api.weixin.qq.com/cgi-bin/stable_token"data = {"grant_type": "client_credential","appid": APPID,"secret": APPSECRET,"force_refresh": False}response = requests.post(url, data=json.dumps(data))access_token = response.json()["access_token"]print('access_token:', access_token)return access_token
if __name__ == '__main__':# get_access_token()# 指定公众号名称和要获取的文章数量count = 10# 获取文章列表# articles = get_article_list(count)get_stable_access_token()

运行结果如下,就是返回结果不像开发文档里面说的,有相关内容,这里其实根本没有内容。

在这里插入图片描述

总结

本来还想通过接口获取公众号文章链接,但是这种方法行不通了,后续我打算使用selenium进行获取。

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

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

相关文章

【LeetCode】每日一题:2960. 统计已测试设备

给你一个长度为 n 、下标从 0 开始的整数数组 batteryPercentages ,表示 n 个设备的电池百分比。 你的任务是按照顺序测试每个设备 i,执行以下测试操作: 如果 batteryPercentages[i] 大于 0: 增加 已测试设备的计数。 将下标在 [i…

力扣HOT100 - 35. 搜索插入位置

解题思路&#xff1a; 二分法模板 class Solution {public int searchInsert(int[] nums, int target) {int left 0;int right nums.length - 1;while (left < right) {int mid left ((right - left) >> 1);if (nums[mid] target)return mid;else if (nums[mid…

【qt】设计器实现界面

设计器实现界面 一.总体思路二.具体操作1.创建项目2.粗略拖放3.水平布局4.垂直布局5.修改名字6.转到槽7.实现槽函数 一.总体思路 二.具体操作 1.创建项目 这次咱们一定要勾选Generate form哦。 因为我们要使用设计器进行拖放。 2.粗略拖放 这里用到了复选框&#xff1a;C…

[数据集][目标检测]管道焊缝质量检测数据集VOC+YOLO格式1134张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1134 标注数量(xml文件个数)&#xff1a;1134 标注数量(txt文件个数)&#xff1a;1134 标注…

python元类与C#、Java中的反射

Python的元类和C#中的反射 在概念上有一定的相似性&#xff0c;但它们的目的和使用方式有所不同。 Python的元类&#xff1a; 元类&#xff08;Metaclass&#xff09;是控制类创建的类。它们定义了类的创建过程&#xff0c;可以修改类的行为。元类通过定制类的创建过程&…

算法训练营第二十五天 | LeetCode 669 修剪二叉树、

LeetCode 669 修剪二叉树 这题用层序遍历双指针删除不符合条件的节点即可。具体是要用到一个虚拟根节点&#xff0c;双指针中prev指针每次指向队列顶元素&#xff0c;cur指针先指向prev左子节点&#xff0c;用循环去除这个位置上不符合条件的节点并连上继承节点&#xff0c;内…

“我们坚持开源!”阿里云发布“地表最强”中文大模型:半年一迭代、性能翻倍?

5 月 9 日&#xff0c;在通义大模型发布一周年之际&#xff0c;阿里云大模型生态迎来一次重大升级&#xff0c;主要有“四个最”&#xff1a; 通义千问 2.5 正式发布&#xff0c;“模型性能全面赶超 GPT-4 Turbo&#xff0c;成为地表最强中文大模型”&#xff1b;Qwen1.5-110B…

卷积特征图与感受野

特征图尺寸和感受野是卷积神经网络中非常重要的两个概念&#xff0c;今天来看一下&#xff0c;如何计算特征尺寸和感受野。 特征图尺寸 卷积特征图&#xff0c;是图片经过卷积核处理之后的尺寸。计算输出特征的尺寸&#xff0c;需要给出卷积核的相关参数包括&#xff1a; 输…

PC端与bluetooth蓝牙虚拟串口通信

应该采用RFCOMM虚拟串口方式来进行通信&#xff0c;原理跟socket通信类似&#xff0c;不同的是使用的通信协议不同&#xff0c;本人结合相关的API&#xff0c;做了以下最简单的封装。 1、获取本地蓝牙设备与附近蓝牙设备信息 2、通信类 /* 通信类&#xff1a;只是对于客户端通…

基于Python实现单例模式

目录 1、使用装饰器实现 2、使用__new__方法实现 单例模式是一种设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问这个唯一实例。这种模式在多种场景中都非常有用&#xff0c;以下是单例模式的一些常见应用场景&#xff1a; 应用程序的…

Spring线程池有哪些

目录 SimpleAsyncTaskExecutor SyncTaskExecutor ThreadPoolTaskExecutor ThreadPoolTaskScheduler Spring框架提供了多种线程池类型,以满足不同场景下的需求。以下是一些常见的Spring线程池类型: SimpleAsyncTaskExecutor 这个实现不重用任何线程,每次调用都会启动一…

抽空学学go

2024年5月9日11:14:24 学习go 看课8小时转职Golang工程师(如果你想低成本学习Go语言)_哔哩哔哩_bilibili 文档[8小时转职Golang工程师 (yuque.com)]( 1.安装go 2024年5月9日11:27:16 2.安装 vscode go配置环境 vs code配置go开发环境 (zhihu.com) vscode里面配置代理&…

全志ARM-SG90舵机

控制转角 向黄色信号线“灌入”PWM信号。 PWM波的频率不能太高&#xff0c;50hz&#xff0c;即周期1/频率1/500.02s&#xff0c;20ms左右数据&#xff1a; 不同的PWM波形对应不同的旋转角度&#xff0c;以20ms为周期&#xff0c;50hz为频率的PWM波 定时器需要定时20ms,关心的单…

el-checkbox复选框做单选

思路&#xff1a;&#xff08;所有选择项都在一个数组中&#xff09;给每一个选项设置一个是否选中的属性&#xff08;checked&#xff09;&#xff0c;通过change事件来改变,数组中每一项的checked&#xff0c;如果change事件的值是true,那么就要把数组中&#xff08;如根据唯…

零基础入门篇①③ Python可变序列类型--列表

Python从入门到精通系列专栏面向零基础以及需要进阶的读者倾心打造,9.9元订阅即可享受付费专栏权益,一个专栏带你吃透Python,专栏分为零基础入门篇、模块篇、网络爬虫篇、Web开发篇、办公自动化篇、数据分析篇…学习不断,持续更新,火热订阅中🔥专栏限时一个月(5.8~6.8)重…

vue阶段案例,练习filter、map、forEach,双向绑定,三元表达式,以及图片滚动,文字跳动等等。

阶段案例 通过案例来练习双向绑定&#xff0c;三元表达式&#xff0c;以及图片滚动&#xff0c;文字跳动等等。 代码如下&#xff1a; <template><table class"bjtp" ><div class"title" >{{title}}</div><div class"s…

【解决Android Studio】cmake报错找不到vulkan包

1 报错信息 CMake Error at D:/Android/project/cmake/3.10.2.4988404/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find Vulkan (missing: Vulkan_LIBRARY) Call Stack (most recent call first): 2. 错误原因 minSdk版本不对&am…

18.Blender 渲染工程、打光方法及HDR贴图导入

HDR环境 如何导入Blender的HDR环境图 找到材质球信息 在右上角&#xff0c;点击箭头&#xff0c;展开详细部分 点击材质球&#xff0c;会出现下面一列材质球&#xff0c;将鼠标拖到第二个材质球&#xff0c;会显示信息 courtyard.exr 右上角打开已渲染模式 左边这里选择世界…

动作识别 slowfast动作识别项目记录

动作识别 slowfast动作识别项目记录

如何在自己的服务器上快速搭建第一个网站(其一)

根据上篇文章相信很多人以及成功搭建服务器啦。今天我们讲下如何在自己的服务器快速搭建第一个网站的一些重要配置&#xff0c;以及搭建网站的必备环境。干货满满&#xff0c;希望大家能够关注点赞收藏。 我会不定期更新一些实用的工具&#xff0c;欢迎大家私信评论喔&#xf…