python js返回 json_[python爬虫]把js转化成json
有一個(gè)優(yōu)秀的庫(kù)可以使用————demjson
目標(biāo)鏈接
請(qǐng)求上面鏈接,會(huì)得到如下圖的一個(gè)js文件
我們需要把這個(gè)js文件轉(zhuǎn)成為dict,方便提取其中需要的字段(這在爬蟲(chóng)任務(wù)中非常常見(jiàn))
失敗的方法
傳統(tǒng)方法
通常轉(zhuǎn)js文件為dict的過(guò)程:
1.先通過(guò)切片掐頭去尾,去掉頭部的 “callarea(” 和尾部的 “)” 。
2.再次導(dǎo)入json這個(gè)庫(kù),使用loads,json.loads(resposne.text[9:-1]),實(shí)現(xiàn)json轉(zhuǎn)dict。
但是,這個(gè)方法在這里行不通。
import requests
import json
url = 'http://fcd.5173.com/commondata/Category.aspx?type=area&cache=&id=20c8bbc1b9794fc98bd96859624d4769&jsoncallback=callarea'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36',
}
resposne = requests.get(url, headers=headers)
print(json.loads(resposne.text[9:-1]))
錯(cuò)誤原因
js文件并不一定是json的超集,這此處的js文件key不包含雙引號(hào),value中的內(nèi)容是單引號(hào)。
上訴方法行得通的前提是這個(gè)js需要時(shí)json的超集,key和value都由雙引號(hào)包圍。
天無(wú)絕人之路
通過(guò)demjson可以一步到位
import requests
import demjson
url = 'http://fcd.5173.com/commondata/Category.aspx?type=area&cache=&id=20c8bbc1b9794fc98bd96859624d4769&jsoncallback=callarea'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36',
}
resposne = requests.get(url, headers=headers)
for item in demjson.decode(resposne.text[9:-1]):
id = item.get('id')
name = item.get('name')
print(id, name)
得到如下結(jié)果
寫(xiě)代碼千萬(wàn)不要睡著了
總結(jié)
以上是生活随笔為你收集整理的python js返回 json_[python爬虫]把js转化成json的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端工具:推荐几款UI设计师好用的设计软
- 下一篇: python loadtxt_Pytho