python自动获取微信公众号最新文章的实现代码


Posted in Python onJuly 15, 2022

微信公众号获取思路

常用的微信公众号文章获取方法有搜狐、微信公众号主页获取和api接口等多个方法。
听说搜狐最近不怎么好用了,之前用的api接口也频繁维护,所以用了微信公众平台来进行数据爬取。
首先登陆自己的微信公众平台,没有账号的可以注册一个。进来之后找“图文信息”,就是写公众号的地方

python自动获取微信公众号最新文章的实现代码

点进去后就是写公众号文章的界面,在界面中找到“超链接” 的字段,在这里就可以对其他的公众号进行检索。

python自动获取微信公众号最新文章的实现代码

python自动获取微信公众号最新文章的实现代码

以“python”为例,输入要检索的公众号名称,在显示的公众号中选择要采集的公众号

python自动获取微信公众号最新文章的实现代码

点开浏览器的检查,找到network中,下图里的这个链接,而右边的Request URL才是存储公众号数据的真实链接。说明这是个json网页。

python自动获取微信公众号最新文章的实现代码

采集实例

以公众号“python”的 链接 为例对网址进行分析。

https://mp.weixin.qq.com/cgi-bin/appmsg:微信公众平台的链接
"token": "163455614",     #需要定期修改的token
"lang": "zh_CN", #语言
"f": "json",
"ajax": "1",  #显示几天的文章
"action": "list_ex"
"begin": "0", #起始页面
"count": "1", #计数
"query": "",
"fakeid": 'MzIwNDA1OTM4NQ==',  #公众号唯一编码
"type": "9",

既然发现了fakeid是代表公众号的唯一编码,那接下来只需要把需要的公众号的fakeid找到就行,我随意找了三个公众号的进行测试。

fakeid=[ 'MzIwNDA1OTM4NQ==','MzkxNzAwMDkwNQ==','MjM5NzI0NTY3Mg==']
#若增加公众号需要增加fakeid

那接下来就是对网址的请求
首先导入需要的库

import time
import requests
from lxml import etree
import pandas as pd
import json
import numpy as np
import datetime
import urllib3
from urllib3.exceptions import InsecureRequestWarning

urllib3.disable_warnings(InsecureRequestWarning)

由于不想重复登录公众号平台,可以使用cookie避开登陆,对文章求情前需要找到网页的cookie和User-Agent,由于微信公众号回定期刷新,这个cookie和上面的token都要定期更换。
为避免反扒最好也找个代理ip

headers = {
"Cookie": "appmsglist_action_3567997841=card;wxuin=49763073568536;pgv_pvid=6311844914;ua_id=x6Ri8bc9LeaWnjNNAAAAADI-VXURALRxlSurJyxNNvg=;mm_lang=zh_CN;pac_uid=0_3cf43daf28071;eas_sid=11Q6v5b0x484W9i7W0Z7l7m3I8;rewardsn=;wxtokenkey=777;wwapp.vid=;wwapp.cst=;wwapp.deviceid=;uuid=fd43d0b369e634ab667a99eade075932;rand_info=CAESIHgWwDfp3W4M9F3/TGnzHp4kKkrkMiCEvN/tSNhHtNBm;slave_bizuin=3567997841;data_bizuin=3567997841;bizuin=3567997841;data_ticket=IfMEEajZ8UvywUZ1NiIv9eKZkq0cgeS0oP6tTzEwNSjwK6q+u5vLw0XYeFvLL/JA;slave_sid=aVBzSlpYOGt4eTdmbzFRWDc1OUhzR1A1UkwzdUdBaklDaGh2dWY2MUZKTEw1Um1aalZRUXg5aVBMeEJVNklCcGlVN0s5Z3VEMmRtVENHS1ZxNTBDOWRCR0p2V2FyY2daU0hxT09Remd5YmlhRWExZkMwblpweVc3SndUbnJIQk55MGhUeExJa1NJcWZ0QmJS;slave_user=gh_e0f449d4f2b6;xid=7d5dc56bb7bb526c70cfef3f6bdfa18a",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36",
    }
proxies = {'http': '112.80.248.73'}

接下来就可以对页面进行爬取,获取页面中的文章标题与文章链接,以及文章的时间,对网页的信息进行分析发现网页的所有信息都保存在’app_msg_list’这个字段中,所以对这个字段中的数据进行提取。

代码如下:

获取到的数据包存在df中,这里的数据还不是微信公众号的最新文章数据,而是微信公众号这最近一天发出的文章数据。所以还需要对发文的时间进行筛选。注意到这里的时间格式为时间戳,所以需要对时间数据进行转换
转换代码如下:

def time_s(df):
    def transfer_time(s): #时间处理
        aa = time.ctime(s)
        bb = aa.split(' ')
        cc = (bb[-1]+"-"+bb[1]+"-"+bb[-3]).replace('Jan','1').replace('Feb','2').replace('Mar','3'). \
            replace('Apr','4').replace('May','5').replace('Jun','6').replace('Jul','7').replace('Aug','8') \
            .replace('Sep','9').replace('Oct','10').replace('Nov','11').replace('Dec','12')
        dd = datetime.datetime.strptime(cc,'%Y-%m-%d').date()
        return dd
    
    ti=[]
    hd=[]
    for i in range(0,len(df['time'])):
        timestap= transfer_time(df['time'][i])
        ti.append(timestap)
        #print(ti)
        d= ti[i] + datetime.timedelta(weeks=0, days=0, hours=0, minutes=0, seconds=0, milliseconds=0, microseconds=0, )
        #dc = d.strftime("%Y-%m-%d")
        hd.append(d)
        
    df['time']=hd

这样就可以把微信公众号的时间戳数据转换为时间数据,之后,根据当前天的日期对数据集中的内容进行提取与存储就OK啦

dat=df[df['time'] == datetime.date.today() + datetime.timedelta(days= -1)] #自动获取昨天日期,将-1改为-2,则为前天的日期,以此类推
    ##改自动化
    path = 'C:/Users/gpower/Desktop/work/行业信息/'   #根据自己电脑位置更改
    import re
    filename=path+"微信公众号采集" + re.sub(r'[^0-9]','',datetime.datetime.now().strftime("%Y-%m-%d")) + '.csv'
    # 对文件进行命名,以“微信公众号采集+当前日期”命名
    dat.to_csv(filename,encoding='utf_8_sig')
    print("保存成功")

这样就可以把需要的微信公众号最新文章采集下来了,需要多个微信公众号在fakeid中添加公众号的识别码就OK啦~

到此这篇关于python自动获取微信公众号最新文章的文章就介绍到这了,更多相关python自动获取微信公众号文章内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python的gevent框架下执行异步的Solr查询的教程
Apr 16 Python
Python使用cookielib模块操作cookie的实例教程
Jul 12 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
python标准库sys和OS的函数使用方法与实例详解
Feb 12 Python
Pandas时间序列基础详解(转换,索引,切片)
Feb 26 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
基于python实现检索标记敏感词并输出
May 07 Python
Softmax函数原理及Python实现过程解析
May 22 Python
Python爬虫入门有哪些基础知识点
Jun 02 Python
教你使用TensorFlow2识别验证码
Jun 11 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 Python
Python Matplotlib绘制条形图的全过程
Oct 24 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 #Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 #Python
python如何将mat文件转为png
Jul 15 #Python
python读取mat文件生成h5文件的实现
Jul 15 #Python
全网非常详细的pytest配置文件
Jul 15 #Python
Python如何加载模型并查看网络
Jul 15 #Python
Python绘制散点图之可视化神器pyecharts
Jul 07 #Python
You might like
PHP 文件扩展名 获取函数
2009/06/03 PHP
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
js动态创建及移除div的方法
2015/06/03 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
python os.path模块常用方法实例详解
2018/09/16 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
python机器人运动范围问题的解答
2019/04/29 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
数学系毕业生的自我评价
2014/01/10 职场文书
员工工作表扬信范文
2014/01/13 职场文书
文明倡议书范文
2014/04/15 职场文书
个人求职信格式范文
2015/03/20 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
创业计划书之面包店
2019/09/12 职场文书
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL
Win11更新失败并提示0xc1900101
2022/04/19 数码科技