大伙儿新年好呀!最近因为写论文,需要采集某微信公众号发布的历史文章数据,研究了三天,今天终于搞定了。现在把详细操作分享给大家~
注:本文仅供学习交流,严禁用于商业用途。
当然,本文所涉项目需要读文档+源码+动手实践,参考示例代码进行改写,无法实现开箱即用。
目录
一、项目需求
二、需求分析
三、前期准备
四、详细步骤
(一)打开 Fiddler记录Chrome浏览器的通信
(二)在Chrome浏览器登录微信公众号后台获取目标链接
(三)PyCharm创建项目运行爬虫脚本
五、关于微信公众号文章的阅读量和点赞数的爬取
某某微信公众号发布的全部历史文章
已有的类似项目,主要有两种方法实现需求,一是使用微信公众号后台进行爬取,二是在电脑上使用Fiddler进行抓包分析。然而,现在是2024年了,由于微信反爬机制升级,上述两种方法仅用一种,根本无法实现需求。因此本文方法是:通过微信公众号后台获取Fiddler抓包分析的目标链接。
1、微信公众号(抓包获取指定公众号所有文章、标题、链接数据)
个人注册微信公众号平台教程 :(个人)注册公众平台步骤
2、安装抓包工具Fiddler Everywhere
详细教程可参考:【Fiddler】mac m1 机器上使用 fiddler 抓取接口_fiddler mac-CSDN博客
3、Chrome浏览器安装插件SwitchyOmega
详细教程可参考,注意整个操作过程中最好把VPN关闭,使用本地网络即可。谷歌浏览器代理扩展程序插件SwitchyOmega安装使用教程_谷歌扩展程序 代理上网-CSDN博客
4、Python 3.11 和 PyCharm CE
(一)打开 Fiddler记录Chrome浏览器的通信
3、在Mac的启动台双击打开Fiddler Everywhere,打开后的页面如下图所示,之后在Chrome浏览器浏览的任何网页,都会被记录在图示红框处的URL栏:
(二)在Chrome浏览器登录微信公众号后台获取目标链接
详细操作如下图所示
此时,登录微信公众号后台的一系列操作都被记录在Fiddler中,点开Fiddler窗口如下图所示:
(蓝条框用于遮挡打码,请自动忽略)
1、在Fiddler记录的URL栏中找到前缀如下的URL,正如上图红框标出的那样
https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&fakeid
2、单击目标网址,Fiddler页面的右上的边栏会显示该网址的参数,找到该网址的fakeid、token、cookie 。如下图红框所示:
Params选项获取fakeid、token
Raw选项获取cookie
可以将fakeid、token、cookie的值直接复制粘贴到文本文件中备用,也可以待会需要的时候直接来Fiddler页面复制。
(三)PyCharm创建项目运行爬虫脚本
1、创建Python微信公众号爬虫脚本
在PyCharm中创建一个新项目名为”训练项目“,在该项目目录下新建python文件”weixin.py",
然后把以下完整代码复制粘贴到”weixin.py"中。
脚本参考文章:https://www.cnblogs.com/hlikex/p/17026496.html
2、更改脚本中的配置。
将上述脚本代码中的fakeid、token、cookie更换成自己刚刚获取的目标对象值。
4、如果运行脚本一次,没能将目标公众号的全部历史文章爬下来,可以更改上述python脚本中的begin": str(page * 4)的设置,这是开始爬取的网页位置,如下图红框所示。如果一次没能爬完,可以将4改成17、20·····等任意比4大的数字。
5、避免封号
每次运行完上述脚本程序后,最好等一会儿再次运行,过快会导致爬取失败,甚至触动反爬机制被封号,要谨慎!
Github上有个大神一直在更新微信公众号爬虫项目,获得2.4k点亮,项目地址如下:
GitHub - wnma3mz/wechat_articles_spider: 微信公众号文章的爬虫
我尝试过他介绍的“通过Fiddler进行抓包分析阅读点赞数”,但没能成功。不知道是不是因为微信公众号改版,导致微信公号文章的网页不再显示阅读量和点赞数了,抓包工具无从抓起,总之难搞😂😂