使用json解析数据时,通常遇到这里就会出现问题'bytes' object has no attribute 'read',这是由于使用的json内置函数不同,一个是load另一个是loads。
代码如下:
import urllib.request import json import jsonpath url = "http://www.lagou.com/lbs/getAllCitySearchLabels.json" headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER "} request = urllib.request.Request(url,headers = headers) response = urllib.request.urlopen(request).read() unicodester = json.load(response) city_list = jsonpath.jsonpath(unicodester,"$..name") for item in city_list: print(item)
报错:
错误原因为json.load()返回类型为fp.read():
改正方法为:
1、将源代码代码
response = urllib.request.urlopen(request).read()
unicodester = json.load(response)
改为(去掉read())response = urllib.request.urlopen(request)unicodester = json.load(response)
2、将源代码json.load(response)改为json.loads(response)
输出正确数据为: