在前面咱们玩了好多静态的 HTML python
想必你应该知道怎么去爬这些数据了web
但还有一些常见的动态数据json
好比数组
商品的评论数据微信
实时的直播弹幕python爬虫
岛国动做片的评分ide
等等函数
这些数据是会常常发生改变的学习
不少网站就会用到 Json 来传输这些数据网站
由于 Json 很是轻量
用 key-value 的形式封装成对象
就像 python 里的字典似的
那么遇到 Json 咱们应该怎么玩呢?
此次
小帅b以「爬取微信好友列表」为例
告诉你怎么玩 Json 数据
那么接下来就是
学习python的正确姿式
微信有一个网页版
这个网页版的数据请求啥的
不少人都想拿来搞事情
因此如今市面上有不少微信机器人
固然
对于 Python 来讲
少便是多
能封装就封装
因此有了一个叫作 itchat 模块
你再也不须要去各类抓包
直接使用就得了
比方便面还方便呢
好像有点偏题了
今天是要说 Json 的是吧
打开微信网页版
https://wx2.qq.com/
咱们使用 Chrome(←能够点击) 来看一下具体的返回数据
能够看到
微信的每个好友
被封装成一个一个的 Json 对象
最后封装成一个 Json 数组
也就是 MemberList
咱们来看看具体的一个好友的数据是怎么样的
{
"Uin":0,
"UserName":"@c482d142bc698bc3971d9f8c26335c5c",
"NickName":"小帅b",
"HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=500080&username=@c482d142bc698bc3971d9f8c26335c5c&skey=@crypt_b0f5e54e_b80a5e6dffebd14896dc9c72049712bf",
"ContactFlag":3,
"MemberCount":0,
"MemberList":[
],
"RemarkName":"",
"HideInputBarFlag":0,
"Sex":1,
"Signature":"",
"VerifyFlag":0,
"OwnerUin":0,
"PYInitial":"XSB",
"PYQuanPin":"xiaoshuaib",
"RemarkPYInitial":"",
"RemarkPYQuanPin":"",
"StarFriend":0,
"AppAccountFlag":0,
"Statues":0,
"AttrStatus":98491,
"Province":"广东",
"City":"广州",
"Alias":"",
"SnsFlag":48,
"UniFriend":0,
"DisplayName":"",
"ChatRoomId":0,
"KeyWord":"che",
"EncryChatRoomId":"",
"IsOwner":0
}
在这个 Json 对象里面
包含了微信好友的不少信息
好比 昵称、头像、备注、性别等等
那么如何从这些数据中拿到咱们想要的呢?
咱们能够用到 json 模块了
python 的 json 模块有两个主要的函数
1
将 python 对象转化为 json是这样的
json.dumps()
2
将json数据转化为python对象是这样的
json.loads()
这也是咱们用的比较多的方法
就拿咱们刚刚获取到微信好友的数据来玩
import json
jsondata = '''
{
"Uin":0,
"UserName":"@c482d142bc698bc3971d9f8c26335c5c",
"NickName":"小帅b",
"HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=500080&username=@c482d142bc698bc3971d9f8c26335c5c&skey=@crypt_b0f5e54e_b80a5e6dffebd14896dc9c72049712bf",
...此处省略一些..
"DisplayName":"",
"ChatRoomId":0,
"KeyWord":"che",
"EncryChatRoomId":"",
"IsOwner":0
}
'''
myfriend = json.loads(jsondata)
这样子咱们就能够直接操做了
由于 myfriend 已经被转化为 python 可使用的字典对象了
好比咱们要获取他的昵称
那么能够这样
myfriend.get('NickName')
这就是咱们拿到一个 Json 数据对象后对它的操做
固然
咱们刚刚举的例子只是 Json 对象
常见的还有 Json 数组
也就是把多个对象组合起来
就像咱们 Python 的 list
好比有这样的 Json 数组的数据
{
"MemberList":[
{
"UserName":"小帅b",
"sex":"男"
},
{
"UserName":"小帅b的1号女友",
"sex":"女"
},
{
"UserName":"小帅b的2号女友",
"sex":"女"
}
]
}
这个时候咱们想要获取好友列表
myfriends = json.loads(jsondata)
memberList = myfriends.get('MemberList')
咱们获得的 memberList 就是一个 Python 的 list 对象了
那么对于 list 里面的数据
咱们用个 for 循环就能垂手可得的获取到啦
ok
下次小帅b还会在爬取项目中带你玩玩 Json
本篇完
近期文章
python爬虫09 | 上来,本身动 !这就是 selenium 的牛逼之处
python爬虫10 | 网站维护人员:真的求求大家了,不要再来爬取了!!
python爬虫11 | 此次,将带你爬取b站上的NBA形象大使蔡徐坤和他的球友们
扫一扫
学习 Python 没烦恼
ps:小帅b力求由浅入深带你玩转 python ,若是以为对你有帮助的话还但愿你点点好看和戳戳广,这样小帅b能赚到不良商家 2 毛钱哦~~想一想就开心。