python js返回 json_[python爬虫]把js转化成json
有一個優秀的庫可以使用————demjson
目標鏈接
請求上面鏈接,會得到如下圖的一個js文件
我們需要把這個js文件轉成為dict,方便提取其中需要的字段(這在爬蟲任務中非常常見)
失敗的方法
傳統方法
通常轉js文件為dict的過程:
1.先通過切片掐頭去尾,去掉頭部的 “callarea(” 和尾部的 “)” 。
2.再次導入json這個庫,使用loads,json.loads(resposne.text[9:-1]),實現json轉dict。
但是,這個方法在這里行不通。
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]))
錯誤原因
js文件并不一定是json的超集,這此處的js文件key不包含雙引號,value中的內容是單引號。
上訴方法行得通的前提是這個js需要時json的超集,key和value都由雙引號包圍。
天無絕人之路
通過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)
得到如下結果
寫代碼千萬不要睡著了
總結
以上是生活随笔為你收集整理的python js返回 json_[python爬虫]把js转化成json的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端工具:推荐几款UI设计师好用的设计软
- 下一篇: 【C++游戏引擎Easy2D】基于基础类