在前面咱們玩了好多靜態的 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 毛錢哦~~想一想就開心。