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,一经查实,立即删除!

相关文章

力扣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 标注…

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

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;只是对于客户端通…

抽空学学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,关心的单…

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…

12个网上赚钱野路子信息差,人人可做的赚钱小项目!

在这个多元化的时代&#xff0c;副业已经成为许多人增加收入、实现自我价值的重要途径。今天&#xff0c;我们就来聊聊那些既有趣又能赚钱的副业项目&#xff0c;让你的钱包鼓起来&#xff01; 1.文字创作 写作不仅是情感的宣泄&#xff0c;更是财富的积累。无论是自媒体文、软…

事件代理 浅谈

事件代理是一种将事件处理委托给父元素或祖先元素来管理的技术。当子元素触发特定事件时&#xff0c;该事件不会直接在子元素上进行处理&#xff0c;而是会冒泡到父元素或祖先元素&#xff0c;并在那里进行处理。这样做的好处是可以减少事件处理函数的数量&#xff0c;提高性能…

VR智慧文旅:开启“韵味”旅游季的新篇章

为了充分满足游客的假日文化旅游需求&#xff0c;各地纷纷“解锁”新花样&#xff0c;沉浸式实景观展震撼“出圈”。在数字化浪潮的推动下&#xff0c;文化旅游行业正经历着变革&#xff0c;在万物皆可沉浸的时代&#xff0c;VR智慧文旅燃起了不一样的热度。 许多业内人士认为&…

Tiff文件解析和PackBits解压缩

实现了Tiff图片文件格式的解析&#xff0c;对Tiff文件中的PackBits压缩格式进行解压缩&#xff0c;对Tiff文件中每一个Frame转换成BufferedImage显示。 Java语言实现&#xff0c;Eclipse下开发&#xff0c;AWT显示图片。 public static TIFF Parse(final byte[] bytes) throw…

排序算法(Java版)

目录 1、直接插入排序2、希尔排序3、直接选择排序4、堆排序5、冒泡排序6、快速排序6.1 递归实现6.2 非递归实现 7、归并排序7.1 递归实现7.2 非递归实现 8、性能分析 今天我们学习一种算法&#xff1a;排序算法&#xff08;本文的排序默认是从小到大顺序&#xff09;&#xff0…

渗透思考题

一&#xff0c;尝试登录。 客户端对密码进行哈希处理并缓存密码hash&#xff0c;丢弃实际的明文密码&#xff0c;然后将用户名发送到服务器&#xff0c;发起认证请求 密文存储位置&#xff1a;数据库文件位于C:WindowsSystem32configsam&#xff0c;同时挂载在注册表中的HKLMSA…

C语言【文件操作 1】

文章目录 1.为什么使用文件2.文件是什么&#xff1f;2.1程序文件2.2数据文件 3.二进制文件和文本文件4.文件的打开和关闭4.1流和标准流流标准流 4.2文件指针4.3文件的打开和关闭 结语 1.为什么使用文件 很简单 长久的存储数据 如果没有文件&#xff0c;我们写程序所产生的数据…