现在比较普遍的公众号爬虫有三种是,一种是通过搜狗引擎采集但是公众号列表页只显示最近群发的数据,数据量比较少。其他的需要通过文章名称来检索,但是话说有文章名称了就不用爬了。第二种方式是通过微信拦截来获取公众号数据但是封号率比较高,爬相对量的数据会消耗挺大的账号成本。第三种方式是通过微信公众平台登录订阅号,在发布文章种的页面找到别人的公众号接口,实现公众号自由。今天就手把手教学这一方法 本文仅提供技术学习请勿用于违法事件,构成犯罪与本博主无关,如有侵权请联系删除
首先需要自行注册微信订阅号账号,一个微信只能注册一个。注册方法不再讲自行查阅
- 先通过微信扫一下登入网站,登录后是这个样子的网站地址
然后点击草稿箱步入
在进入图文模板(在不同版本间入口可能不同,总之找到图文模板就对了)
继续步入新建新建图文模板
注意到这里可不是要写文章,点击超链接
弹出弹框后点击选择其他公众号
输入公众号检索后选择要看公众号就能看到数据列表了,然后就是抓包写代码采集了。
- 贴一下代码
headers = {
'authority': 'mp.weixin.qq.com',
'accept': '*/*',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
# 'cookie': '自己的cookies',
'pragma': 'no-cache',
'referer': 'https://mp.weixin.qq.com/cgi-bin/appmsgtemplate?action=edit&lang=zh_CN&token=1685420175',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36',
'x-requested-with': 'XMLHttpRequest',
}
for page in range(0,23):
begin = page * 5
print(f'采集到了第={page} 页')
url = "https://mp.weixin.qq.com/cgi-bin/appmsg"
params = {
"action": "list_ex",
"begin": f"{begin}",
"count": "5",
"fakeid": "MzU0MTA3NDk0Mw==",#文章id
"type": "9",
"query": "",
"token": "1685420175",#这里是一个时间戳
"lang": "zh_CN",
"f": "json",
"ajax": "1"
}
response = requests.get(url, headers=headers, cookies=cookies, params=params).json()['app_msg_list']
time.sleep(random.randint(0, 5) * 1.35)
for res in response:
res['source'] = '精准**'
mdb.insert_one(res)
3. 这个cookies是长效的,不是经常过期,可以多搞一个账号搭一个cookies池监控几百的公众号没问题。