想要快速获取微信公众号的所有文章资讯吗?可以尝试使用爬虫工具。下面我将详细介绍具体的操作步骤。
寻找文章链接地址
通常在网上无法找到某个公众号的所有文章,不过通过微信公众号平台,可以一次性全部获取。首先需要注册并登录一个微信公众号,然后进入后台操作界面,选择素材管理,接着点击创建图文,最后在上方的超链接功能中进行操作。启动开发者工具,进行搜索操作,点击公众号功能,可以捕捉到一个获取请求的数据包,该数据包中包含了文章的多项详细信息,例如文章的链接、标题、生成日期以及封面图片的URL地址等。
构造请求参数
发现请求信息后,便着手构建。URL地址保持不变,只需复制粘贴请求头,GET请求的参数同样可以复制使用。这里的“begin”指的是页码,若需获取更多内容,需要翻页查看。通过调整“begin”的数值,可以持续获取文章信息。但通常情况下,一次最多可以抓取大约60页的数据。
注意请求频率
进行第一步时,务必留意请求的次数。若请求过于密集,服务器可能会暂时禁止访问,我自己的测试结果显示被封禁的时间大约是几分钟。在每次请求前短暂休息几秒钟,效果并不理想,这时就只能更换账号,或者等待几十分钟后才能继续进行操作。
获取文章详细信息
获取文章链接后,我们还需收集文章的相关信息,例如阅读量和点赞量。在PC端微信的公众号中点击文章,页面下方会显示阅读量、点赞量等数据,而通过浏览器浏览文章则无法看到这些信息。这主要是因为PC端微信在请求文章内容时附加了一些浏览器所不具备的参数,导致服务器未能提供这些实时数据。
import requests
import time
import datetime
import pytz
url="https://mp.weixin.qq.com/cgi-bin/appmsg"
#我这里先把数据写入到txt文件中
f=open("微信公众号文章.txt",mode="w",encoding="utf-8")
headers={
#这里是你自己的headers
}
params={
#这里是你自己的params
}
begin=0
#发起第一次请求
![图片[3]-爬取微信公众号全部文章:找链接地址与构造url的详细过程-东山笔记](https://83ch.com/wp-content/themes/zibll/img/thumbnail-lg.svg)
resp=requests.get(url,headers=headers,params=params,verify=False)
data = resp.json()
while True:
time.sleep(5)
#data['app_msg_list']里面装载的就是我们需要的数据
if len(data['app_msg_list'])==0:
#可能数据请求完了,可能请求失败,可能你的微信公众号请求被禁用一段时间(因为爬数据过于频繁,被发现了)
break
for app_msg in data['app_msg_list']:
title = app_msg['title'] #文章标题
link = app_msg['link'] #文章链接
update_time=app_msg['update_time'] #文章创建时间,为时间戳
#将时间戳转为 年月日,时分秒
update_time = datetime.datetime.fromtimestamp(int(update_time), pytz.timezone('Asia/Shanghai')).strftime('%m/%d/%Y %H:%M:%S')
cover =app_msg['cover'] #文章封面图片地址
#请求下一页的数据
begin+=1
params['begin']=begin*5
resp = requests.get(url, headers=headers, params=params,verify=False)
data = resp.json()
print(resp)
使用抓包工具
为了获取这些资料,我们借助抓包软件来捕捉微信打开文章时发出的数据请求。我使用的抓包软件可以在其官方网站找到,网址如下:抓包工具官网地址。关于其简单操作,这里就不详细说明了,只需确保能成功进行抓包即可。在监听过程中,随意点击你想要抓取内容的公众号文章,系统就会捕捉到一个以“/mp/?”结尾的POST请求URL地址。
提取关键数据
分析返回的json数据后,我们可以获取文章的阅读量和观看量。当然,若需提取页面上的其他信息,同样可行。通过构造基于该POST请求的信息,我们能获取特定文章的阅读量和观看量。在此提醒,进行下一步操作时,请避免过于频繁的请求,每隔几秒进行一次是适宜的。若遇到请求被禁用的情况,可以尝试重新抓包。
你是否曾尝试过运用爬虫技术来搜集公众号文章内容?若你认同这种方法的有效性,不妨点个赞并将这篇文章转发出去。