一日一技:爬蟲如何解析JavaScript Object?
我們?cè)陂_發(fā)爬蟲的過程中,經(jīng)常發(fā)現(xiàn)有一些網(wǎng)站,會(huì)直接把數(shù)據(jù)放到HTML中的<script>標(biāo)簽里面。這些數(shù)據(jù)長得有點(diǎn)像JSON,但又有差異,如下圖所示:
圖片
這種格式,我們叫做JavaScript Object。長得很像Python的字典,又很像是JSON。但是這個(gè)格式在Python里面,無論直接當(dāng)字典解析,還是當(dāng)JSON解析,都會(huì)報(bào)錯(cuò),如下圖所示:
圖片
遇到這種情況,有同學(xué)準(zhǔn)備使用正則表達(dá)式來解析,又有同學(xué)直接放棄。
但實(shí)際上,這種數(shù)據(jù)結(jié)構(gòu),使用Yaml是可以直接解析成Python的字典。我們首先來安裝一下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庫也能直接解析正常的JSON:
圖片
甚至各種復(fù)雜的混合格式也能正常解析:
圖片