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.pswp.cn/web/10317.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10317.shtml
英文地址,請注明出處:http://en.pswp.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…