如何使用Python FAST下载和解析JSON



>我正在尝试下载 JSON 文件

with urlopen(url_str) as url:
return json.loads(url.read().decode())

而且它的工作速度慢得令人无法接受(比等效的 Java 代码慢 10+ 倍(。

有没有办法以正常速度执行此操作?

更新

我是这样写的:

def read_json_data(url_str: str):
req = Request(url_str, headers={'Accept-encoding': 'gzip'})
with urlopen(req) as resp:
if resp.info().get('Content-Encoding') == 'gzip':
with gzip.GzipFile(fileobj=resp) as fp:
data = json.load(fp)
else:
data = json.load(resp)
return data

但是在json.load(fp)上出现错误:

TypeError: the JSON object must be str, not 'bytes'

为什么?json.load(没有s(不是接受文件指针吗?

urlopen支持gzip,你只需要要求它:

import urllib.request
import gzip
import json
urlstr = "http://example.com/your-json-url"
req = urllib.request.Request(urlstr,
headers={'Accept-encoding':'gzip'})
resp = urllib.request.urlopen(req)
if resp.info().get('Content-Encoding') == 'gzip':
print("got gzip")
data = json.load(gzip.GzipFile(resp))
else:
print("no gzip")
data = json.load(resp)

最新更新