python爬蟲將js轉(zhuǎn)化成json實現(xiàn)示例
正文
有一個優(yōu)秀的庫可以使用————demjson
示范鏈接
http://fcd.5173.com/commondat...
請求上面鏈接,會得到如下圖的一個js文件
我們需要把這個js文件轉(zhuǎn)成為dict,方便提取其中需要的字段(這在爬蟲任務中非常常見)
失敗的方法
傳統(tǒng)方法
通常轉(zhuǎn)js文件為dict的過程:
1.先通過切片掐頭去尾,去掉頭部的 “callarea(” 和尾部的 “)” 。
2.再次導入json這個庫,使用loads,json.loads(resposne.text[9:-1])
,實現(xiàn)json轉(zhuǎn)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中的內(nèi)容是單引號。
上訴方法行得通的前提是這個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轉(zhuǎn)化成json實現(xiàn)示例的詳細內(nèi)容,更多關于python將js轉(zhuǎn)化成json的資料請關注腳本之家其它相關文章!
相關文章
Python中的getter與setter及deleter使用示例講解
這篇文章主要介紹了Python中的getter與setter及deleter使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-01-01Python爬蟲獲取數(shù)據(jù)保存到數(shù)據(jù)庫中的超詳細教程(一看就會)
使用爬蟲爬數(shù)據(jù),總要涉及到數(shù)據(jù)持久化,也就是數(shù)據(jù)存儲的問題,下面這篇文章主要給大家介紹了關于Python爬蟲獲取數(shù)據(jù)保存到數(shù)據(jù)庫中的超詳細教程,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2022-06-06Python保留指定位數(shù)小數(shù)的5種方法總結
很多小伙伴在學習python的時候可能會遇到對數(shù)據(jù)進行格式化輸出的需求,其中最常見的需求為保留幾位小數(shù),這篇文章主要給大家介紹了關于Python保留指定位數(shù)小數(shù)的5種方法,需要的朋友可以參考下2023-08-08Python利用matplotlib實現(xiàn)制作動態(tài)條形圖
說到用 Python 制作動態(tài)圖,首先想到的肯定是一些直接拿來就用的庫,雖然我沒做過,但是我相信一定有且不止一個,搜了一圈后發(fā)現(xiàn)有個bar chart race庫看起來不錯,感興趣的可以跟隨小編一起學習一下2022-10-10Python報錯TypeError: object of type ‘gener
在Python開發(fā)的復雜世界中,報錯信息就像神秘的謎題,困擾著開發(fā)者和環(huán)境配置者,其中,TypeError: object of type ‘generator’ has no len()這個報錯,常常在不經(jīng)意間打亂我們的開發(fā)節(jié)奏,本文讓我們一起深入探究這個報錯問題,為Python開發(fā)之路掃除障礙2024-10-10