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实现获取客户机上指定文件并传输到服务器的方法
Mar 16 Python
解决Python中由于logging模块误用导致的内存泄露
Apr 23 Python
Python 私有函数的实例详解
Sep 11 Python
Python序列循环移位的3种方法推荐
Apr 09 Python
python实现验证码识别功能
Jun 07 Python
python找出一个列表中相同元素的多个索引实例
Jun 11 Python
numpy中的meshgrid函数的使用
Jul 31 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
python中从for循环延申到推导式的具体使用
Nov 29 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 Python
python将图片转为矢量图的方法步骤
Mar 30 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绘制一个矩形的方法
2015/01/24 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
js 编写规范
2010/03/03 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
基于JS判断对象是否是数组
2020/01/10 Javascript
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
python实现简单的计时器功能函数
2015/03/14 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python的列表List求均值和中位数实例
2020/03/03 Python
Python实现一个论文下载器的过程
2021/01/18 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
大学生最常用的自我评价
2013/12/07 职场文书
技术副厂长岗位职责
2013/12/26 职场文书
七年级音乐教学反思
2014/01/26 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
财务会计岗位职责
2015/02/03 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
Go timer如何调度
2021/06/09 Golang