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常用模块介绍
Nov 21 Python
Python调用命令行进度条的方法
May 05 Python
Python的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
Python探索之修改Python搜索路径
Oct 25 Python
python抓取网站的图片并下载到本地的方法
May 22 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
python Django中models进行模糊查询的示例
Jul 18 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
Feb 04 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
Python爬虫工具requests-html使用解析
Apr 29 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 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
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
军训自我鉴定
2013/12/14 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
幼教求职信
2014/03/12 职场文书
遗体告别仪式主持词
2014/03/20 职场文书
会计求职信
2014/05/29 职场文书
欢迎横幅标语
2014/06/17 职场文书
淘宝好评语句大全
2014/12/31 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技