python爬蟲將js轉(zhuǎn)化成json實(shí)現(xiàn)示例
正文
有一個(gè)優(yōu)秀的庫可以使用————demjson
示范鏈接
http://fcd.5173.com/commondat...
請(qǐng)求上面鏈接,會(huì)得到如下圖的一個(gè)js文件

我們需要把這個(gè)js文件轉(zhuǎn)成為dict,方便提取其中需要的字段(這在爬蟲任務(wù)中非常常見)
失敗的方法
傳統(tǒng)方法
通常轉(zhuǎn)js文件為dict的過程:
1.先通過切片掐頭去尾,去掉頭部的 “callarea(” 和尾部的 “)” 。
2.再次導(dǎo)入json這個(gè)庫,使用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)包圍。
天無絕人之路
通過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é)果

寫代碼千萬不要睡著了
以上就是python爬蟲將js轉(zhuǎn)化成json實(shí)現(xiàn)示例的詳細(xì)內(nèi)容,更多關(guān)于python將js轉(zhuǎn)化成json的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
keras實(shí)現(xiàn)VGG16方式(預(yù)測(cè)一張圖片)
這篇文章主要介紹了keras實(shí)現(xiàn)VGG16方式(預(yù)測(cè)一張圖片),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Python中的getter與setter及deleter使用示例講解
這篇文章主要介紹了Python中的getter與setter及deleter使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01
Python爬蟲獲取數(shù)據(jù)保存到數(shù)據(jù)庫中的超詳細(xì)教程(一看就會(huì))
使用爬蟲爬數(shù)據(jù),總要涉及到數(shù)據(jù)持久化,也就是數(shù)據(jù)存儲(chǔ)的問題,下面這篇文章主要給大家介紹了關(guān)于Python爬蟲獲取數(shù)據(jù)保存到數(shù)據(jù)庫中的超詳細(xì)教程,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Python保留指定位數(shù)小數(shù)的5種方法總結(jié)
很多小伙伴在學(xué)習(xí)python的時(shí)候可能會(huì)遇到對(duì)數(shù)據(jù)進(jìn)行格式化輸出的需求,其中最常見的需求為保留幾位小數(shù),這篇文章主要給大家介紹了關(guān)于Python保留指定位數(shù)小數(shù)的5種方法,需要的朋友可以參考下2023-08-08
Python的Django框架中自定義模版標(biāo)簽的示例
這篇文章主要介紹了Python的Django框架中自定義模版標(biāo)簽的示例,標(biāo)簽的用處比過濾器更多,需要的朋友可以參考下2015-07-07
Python利用matplotlib實(shí)現(xiàn)制作動(dòng)態(tài)條形圖
說到用 Python 制作動(dòng)態(tài)圖,首先想到的肯定是一些直接拿來就用的庫,雖然我沒做過,但是我相信一定有且不止一個(gè),搜了一圈后發(fā)現(xiàn)有個(gè)bar chart race庫看起來不錯(cuò),感興趣的可以跟隨小編一起學(xué)習(xí)一下2022-10-10
Python報(bào)錯(cuò)TypeError: object of type ‘gener
在Python開發(fā)的復(fù)雜世界中,報(bào)錯(cuò)信息就像神秘的謎題,困擾著開發(fā)者和環(huán)境配置者,其中,TypeError: object of type ‘generator’ has no len()這個(gè)報(bào)錯(cuò),常常在不經(jīng)意間打亂我們的開發(fā)節(jié)奏,本文讓我們一起深入探究這個(gè)報(bào)錯(cuò)問題,為Python開發(fā)之路掃除障礙2024-10-10

