python爬蟲12 | 爸爸,他使壞,用動態的 Json 數據,我要怎麼搞?

 

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

相關文章
相關標籤/搜索