一日一技:爬蟲(chóng)如何解析JavaScript Object?
我們?cè)陂_(kāi)發(fā)爬蟲(chóng)的過(guò)程中,經(jīng)常發(fā)現(xiàn)有一些網(wǎng)站,會(huì)直接把數(shù)據(jù)放到HTML中的<script>標(biāo)簽里面。這些數(shù)據(jù)長(zhǎng)得有點(diǎn)像JSON,但又有差異,如下圖所示:
圖片
這種格式,我們叫做JavaScript Object。長(zhǎng)得很像Python的字典,又很像是JSON。但是這個(gè)格式在Python里面,無(wú)論直接當(dāng)字典解析,還是當(dāng)JSON解析,都會(huì)報(bào)錯(cuò),如下圖所示:
圖片
遇到這種情況,有同學(xué)準(zhǔn)備使用正則表達(dá)式來(lái)解析,又有同學(xué)直接放棄。
但實(shí)際上,這種數(shù)據(jù)結(jié)構(gòu),使用Yaml是可以直接解析成Python的字典。我們首先來(lái)安裝一下Yaml:
pip install pyyaml然后直接像解析JSON一樣解析:
import yaml
data = '''
{
name: '青南',
salary: 999999999,
address: '上海',
pro: true
}
'''
info = yaml.safe_load(data)運(yùn)行效果如下圖所示,已經(jīng)直接解析成了Python的字典:
圖片
Yaml格式是JSON格式的超集,因此,使用pyyaml庫(kù)也能直接解析正常的JSON:
圖片
甚至各種復(fù)雜的混合格式也能正常解析:

圖片































