只需十几行代码,轻松爬取公众号文章!
source link: http://www.justdopython.com/2022/11/17/python-scrapywechatmp/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
只需十几行代码,轻松爬取公众号文章!
2022-11-17
| python
最近关注了几个公众号,想收藏有价值的内容。不过文章较多,不停的下滑操作去找文章是一件折磨人的事,试过几次后,面对众多的资源望洋兴叹。
有什么好的方法呢?有人推荐连接手机用fiddler抓包,被坑了2个小时😡,此路不通或者说麻烦。
一个比较好的方法是找到微信公众号平台内部的API,比如“python技术”的的文章这里都有,哈哈:
为了获取文章列表,我特意注册了一个微信公众号。
注册好了,咱们直奔主题,说下操作过程。
进入公众号点击<草稿箱>,再点击右侧<图文模板> ![](http://www.justdopython.com/assets/images/2022/11/scrapywechatmp/2.png) 选择<新建图文模板> ![](http://www.justdopython.com/assets/images/2022/11/scrapywechatmp/3.png) 进入到编辑界面,点<超链接>,选<选择其他公众号>,输入你要爬的公众号名称。 ![](http://www.justdopython.com/assets/images/2022/11/scrapywechatmp/4.png) ![](http://www.justdopython.com/assets/images/2022/11/scrapywechatmp/5.png) 以python技术为例: ![](http://www.justdopython.com/assets/images/2022/11/scrapywechatmp/6.png) 按F12或通过鼠标右键检查,点《Network》后选择《XHR》一般最后一个即是当前页面内容所在,这里看到url和标题分别位于《link》和《title》标签下,如果network没东西刷新试一下
下图最后一个箭头的title标签,可以看到我昨天发表的“用LOL英雄点缀你的博客”
到这里我们已经成功了一半,接下来我们获取用到的《user-agent》《URL》《cooike》《tooken》和《fakeid》,点击Headers
注意: 下面“完整脚本”中的fakeid、token、type等的值在url中可以看到
# -*- coding: utf-8 -*-
import requests
import time
headers = {
"cookie": "appmsglist_action_3889613222=card; ua_id=Q1Dfu2THA6T9Qr1HAAAAAN_KYa5xTwNmiuqj1Mkl6PY=; wxuin=18828715020059xid=a5c7612f529374b74deb4178e7ff4ca7",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
}
url = 'https://mp.weixin.qq.com/cgi-bin/appmsg'
fad = 'MjM5ODM3MTUwMA==' #爬不同公众号只需要更改 fakeid
def page(num=1): #要请求的文章页数
title = []
link = []
for i in range(num):
data = {
'action': 'list_ex',
'begin': i*5, #页数
'count': '5',
'fakeid': fad,
'type': '9',
'query':'' ,
'token': '1753262244',
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
}
r = requests.get(url,headers = headers,params=data)
dic = r.json()
for i in dic['app_msg_list']: #遍历dic['app_msg_list']中所有内容
title.append(i['title']) #取 key键 为‘title’的 value值
link.append(i['link']) #去 key键 为‘link’的 value值
return title,link
if __name__ == '__main__':
(tle,lik) = page(5)
for x,y in zip(tle,lik):
print(x,y)
成功获取5页url和标题,可以看到我发表过的几篇文章😀,以后查公众号文章就方便了,bingo!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK