纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

Python获取公众号文章 使用Python获取公众号下所有的文章

一天一篇Python库   2021-06-24 我要评论
想了解使用Python获取公众号下所有的文章的相关内容吗一天一篇Python库在本文为您仔细讲解Python获取公众号文章的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Python获取公众号文章,Python微信公众号全部文章下面大家一起来学习吧

导出公众号所有文章

随着互联网的不断发展网络上兴起了很多的自媒体平台不用我说相信大家也能知道当下非常流行的平台都有哪些

可以说凡是比较知名的自媒体都有自己的公众号但是平台的创新与出现可谓层出不穷如果需要入住平台肯定需要获取原平台的历史资源

比如说微信公众号我们就需要获取微信公众号的文章将其导出后入住其他的平台那么如何获取自己公众号下的所有文章呢?

开发者ID与开发者密码

其实公众号给我们开发中提供了非常友好的接口并不需要我们一个一个去爬就可以获取文章的所有链接

基本配置

如上图所示我们需要进入公众号主页然后通过设置与开发-基本配置找到开发者ID与开发者密码

因为微信给我们提供了接口专门用于我们获取公众号的文章具体的接口网址如下面代码所示:

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

这里的APPID就是开发中IDAPPSECRET就是开发者密码如下图所示进行获取

IP白名单

不过这里有一个IP白名需要注意为了公众号文章的安全必须设置IP地址才能获取如果后面的代码并没有在IP下运行那么肯定会报错

IP白名单2
如上图所示IP白名单是直接设置你的IP地址设置完成之后点击修改弹出二维码后用微信扫描即可

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

这样还不行因为该网址接口只是获取access_token也就是访问公众号的令牌而获取公众号文章的链接是上面这个

获取Json格式的公众号文章信息

既然已经基本了解了原理下面我们来通过实战获取所有的公众号标题链接描述以及文章的展示图示例如下:

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('开发者ID', '开发者密码')

这里我们先来看一下result的原始文本数据具体如下所示:

total

原始的JSON数据中有一个非常重要的数据也就是total_count也就是公众号成立以来推送的次数

但是需要注意公众号可以单次推送一篇或者单次推送234篇并不一直都是一模一样

而获取哪次推送的数据你可以通过offset逆向溯源至于每次是多少篇则需要通过返回的Json数据news_item有多少个决定如下图所示:

news_item

所以我们还有在里面加上一次遍历第1层遍历的是微信公众号推送的哪天数据第2层遍历遍历的是当天发送的篇数运行之后效果如下:

获取的数据

参数 含义
title 文章标题
digest 文章描述
url 文章链接
thumb_url 文章展示图

保存数据到CSV文件

当然我们获取数据并不是为了在控制台去打印而是为了导出数据所以我们将上面的数据打包到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']
# 保存数据到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'])代码下面的所有数据即可上面的代码保持不变

需要额外注意的是之所以设置result.encoding = result.apparent_encoding是因为返回数据的编码事先我们并不知道这样做能保证任何编码都能有效的解析

运行之后如下图所示所有的公众号文章的基本详情就全部获取到了

数据获取


相关文章

猜您喜欢

  • C# 连接使用Zookeeper C#怎样连接使用Zookeeper

    想了解C#怎样连接使用Zookeeper的相关内容吗没有星星的夏季在本文为您仔细讲解C# 连接使用Zookeeper的相关知识和一些Code实例欢迎阅读和指正我们先划重点:C#,连接Zookeeper,C#,使用Zookeeper下面大家一起来学习吧..
  • docker部署Apollo环境 docker-compose 部署 Apollo 自定义环境的详细教程

    想了解docker-compose 部署 Apollo 自定义环境的详细教程的相关内容吗往事随灬锋在本文为您仔细讲解docker部署Apollo环境的相关知识和一些Code实例欢迎阅读和指正我们先划重点:docker-compose,部署Apollo环境,docker,Apollo环境下面大家一起来学习吧..

网友评论

Copyright 2020 www.gamerfx.net 【游戏天空】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式