欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python獲取公眾號下所有的文章

 更新時間:2021年06月24日 10:42:17   作者:一天一篇Python庫  
我比較喜歡看公眾號,有時遇到一個感興趣的公眾號時,都會感覺相逢恨晚,想一口氣看完所有歷史文章。本文主要介紹了使用Python獲取公眾號下所有的文章,感興趣的可以了解一下

導出公眾號所有文章

隨著互聯(lián)網(wǎng)的不斷發(fā)展,網(wǎng)絡上興起了很多的自媒體平臺。不用我說,相信大家也能知道當下非常流行的平臺都有哪些。

可以說凡是比較知名的自媒體,都有自己的公眾號。但是平臺的創(chuàng)新與出現(xiàn)可謂層出不窮,如果需要入住平臺,肯定需要獲取原平臺的歷史資源。

比如說微信公眾號,我們就需要獲取微信公眾號的文章,將其導出后,入住其他的平臺,那么如何獲取自己公眾號下的所有文章呢?

開發(fā)者ID與開發(fā)者密碼

其實,公眾號給我們開發(fā)中提供了非常友好的接口,并不需要我們一個一個去爬,就可以獲取文章的所有鏈接。

基本配置

如上圖所示,我們需要進入公眾號主頁,然后通過設置與開發(fā)-基本配置,找到開發(fā)者ID與開發(fā)者密碼。

因為微信給我們提供了接口專門用于我們獲取公眾號的文章,具體的接口網(wǎng)址,如下面代碼所示:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

這里的APPID就是開發(fā)中ID,APPSECRET就是開發(fā)者密碼,如下圖所示進行獲取。

IP白名單

不過,這里有一個IP白名需要注意,為了公眾號文章的安全,必須設置IP地址才能獲取。如果后面的代碼并沒有在IP下運行,那么肯定會報錯。

IP白名單2
如上圖所示,IP白名單是直接設置你的IP地址,設置完成之后點擊修改,彈出二維碼后用微信掃描即可。

https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=

這樣還不行,因為該網(wǎng)址接口只是獲取access_token,也就是訪問公眾號的令牌,而獲取公眾號文章的鏈接是上面這個。

獲取Json格式的公眾號文章信息

既然已經(jīng)基本了解了原理,下面我們來通過實戰(zhàn)獲取所有的公眾號標題,鏈接,描述以及文章的展示圖。示例如下:

import requests
import json
import csv

def getGZHJson(appid, secret):
    path = " https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential"
    url = path + "&appid=" + appid + "&secret=" + secret
    result = requests.get(url)
    token = json.loads(result.text)
    access_token = token['access_token']
    data = {
        "type": "news",
        "offset": 0,
        "count": 1,
    }
    headers = {
        'content-type': "application/json",
        'Accept-Language': 'zh-CN,zh;q=0.9'
    }
    url = 'https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=' + access_token
    result = requests.post(url=url, data=json.dumps(data), headers=headers)
    result.encoding = result.apparent_encoding
    result = json.loads(result.text)
    count = int(result['total_count'])
    gzh_dict = {"news_item": []}
    for i in range(0, count):
        data['offset'] = i
        result = requests.post(url=url, data=json.dumps(data), headers=headers)
        result.encoding = result.apparent_encoding
        result = json.loads(result.text)
        for item in result['item'][0]['content']['news_item']:
            temp_dict = {}
            temp_dict['title'] = item["title"]
            temp_dict['digest'] = item["digest"]
            temp_dict['url'] = item["url"]
            temp_dict['thumb_url'] = item["thumb_url"]
            print(temp_dict)
            gzh_dict['news_item'].append(temp_dict)
    return json.dumps(gzh_dict)

getGZHJson('開發(fā)者ID', '開發(fā)者密碼')

這里,我們先來看一下result的原始文本數(shù)據(jù),具體如下所示:

total

原始的JSON數(shù)據(jù)中,有一個非常重要的數(shù)據(jù)也就是total_count,也就是公眾號成立以來,推送的次數(shù)。

但是需要注意,公眾號可以單次推送一篇,或者單次推送2,3,4篇,并不一直都是一模一樣。

而獲取哪次推送的數(shù)據(jù),你可以通過offset逆向溯源,至于每次是多少篇,則需要通過返回的Json數(shù)據(jù)news_item有多少個決定。如下圖所示:

news_item

所以,我們還有在里面加上一次遍歷,第1層遍歷的是微信公眾號推送的哪天數(shù)據(jù),第2層遍歷,遍歷的是當天發(fā)送的篇數(shù)。運行之后,效果如下:

獲取的數(shù)據(jù)

參數(shù) 含義
title 文章標題
digest 文章描述
url 文章鏈接
thumb_url 文章展示圖

保存數(shù)據(jù)到CSV文件

當然,我們獲取數(shù)據(jù)并不是為了在控制臺去打印,而是為了導出數(shù)據(jù)。所以,我們將上面的數(shù)據(jù)打包到CSV文件中保存起來。

示例如下:

result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
print(result.encoding)
result = json.loads(result.text)
count = int(result['total_count'])

#替換下面的代碼
ulist = ["_id", "title", 'digest', 'url', 'thumb_url']
# 保存數(shù)據(jù)到csv文件
new_item_csv = 'week'
with open('{}.csv'.format(new_item_csv), 'w', encoding='utf-8-sig', newline='') as f:
    writer = csv.writer(f, dialect='excel')
    writer.writerow(ulist)
    for i in range(0, count):
        data['offset'] = i
        result = requests.post(url=url, data=json.dumps(data), headers=headers)
        result.encoding = result.apparent_encoding
        result = json.loads(result.text)
        for item in result['item'][0]['content']['news_item']:
            writer.writerow([count_id, item["title"], item["digest"], item["url"], item["thumb_url"]])
            count_id += 1

這里,只需要改count = int(result[‘total_count'])代碼下面的所有數(shù)據(jù)即可。上面的代碼保持不變。

需要額外注意的是,之所以設置result.encoding = result.apparent_encoding,是因為返回數(shù)據(jù)的編碼事先我們并不知道,這樣做能保證任何編碼都能有效的解析。

運行之后,如下圖所示,所有的公眾號文章的基本詳情就全部獲取到了。

數(shù)據(jù)獲取

到此這篇關于使用Python獲取公眾號下所有的文章的文章就介紹到這了,更多相關Python獲取公眾號文章內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Pandas分組函數(shù)groupby的用法詳解

    Pandas分組函數(shù)groupby的用法詳解

    在數(shù)據(jù)分析時,經(jīng)常需要將數(shù)據(jù)分成不同的群組,pandas中的groupby()函數(shù)可以完美地完成各種分組操作,本文就來介紹一下Pandas分組函數(shù)groupby的用法,感興趣的可以了解一下
    2024-01-01
  • Python中低維數(shù)組填充高維數(shù)組的實現(xiàn)

    Python中低維數(shù)組填充高維數(shù)組的實現(xiàn)

    今天小編就為大家分享一篇Python中低維數(shù)組填充高維數(shù)組的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python之擬合的實現(xiàn)

    python之擬合的實現(xiàn)

    這篇文章主要介紹了python之擬合的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • python簡單直接獲取windows明文密碼操作技巧

    python簡單直接獲取windows明文密碼操作技巧

    在實戰(zhàn)中,拿到一臺Windows服務器權限,如果可以直接獲取Windows明文密碼的話,就可以更容易深入挖掘。本文分享幾個獲取Windows明文密碼的技巧,簡單直接且有效
    2021-10-10
  • Python實現(xiàn)接口下載json文件并指定文件名稱

    Python實現(xiàn)接口下載json文件并指定文件名稱

    在 Web 開發(fā)中,提供文件下載功能是一種常見的需求,尤其是當涉及到導出數(shù)據(jù)為 JSON 格式時,為了確保文件名的自定義以及避免亂碼問題,開發(fā)者需要采取一些特定的措施,本文介紹了Python實現(xiàn)接口下載json文件并指定文件名稱,需要的朋友可以參考下
    2024-10-10
  • 基于SpringBoot構造器注入循環(huán)依賴及解決方式

    基于SpringBoot構造器注入循環(huán)依賴及解決方式

    這篇文章主要介紹了基于SpringBoot構造器注入循環(huán)依賴及解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • np.hstack()和np.dstack()的使用

    np.hstack()和np.dstack()的使用

    本文主要介紹了np.hstack()和np.dstack()的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • windows python3安裝Jupyter Notebooks教程

    windows python3安裝Jupyter Notebooks教程

    這篇文章主要介紹了windows python3安裝Jupyter Notebooks教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 詳解Python的三種拷貝方式

    詳解Python的三種拷貝方式

    Python中有三種拷貝方式分別是淺拷貝、深拷貝和賦值拷貝,這篇文章通過實例代碼給大家介紹了Python的三種拷貝方式,需要的朋友可以參考下
    2020-02-02
  • python中字典的常見操作總結2

    python中字典的常見操作總結2

    這篇文章主要介紹了python中字典的常見操作總結,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07

最新評論