JSON看起来像python类型(列表,字典)的字符串。
在之前的文章中,我们说到了怎么用response的方法,获取到网页正确解码后的字符串。如果还有不懂的,可以先阅读 Python爬虫(三)Requests库 。接下来以有道翻译为例子,说说怎么通过网页解码后的字符串,提取到翻译结果。
再结合上述有道翻译的例子,得到字典类型的返回结果,并提取出来翻译结果。
将上述例子的dict_json换成str字符串,再写入文本中。
执行完上述的程序,会得到一个fanyi.txt的文件,其结果如下:{"type": "ZH_CN2EN", "errorCode": 0, "elapsedTime": 1, "translateResult": [[{"src": "\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528python", "tgt": "Life is too short, I use python"}]]}。这样子的一份文档,中文部分显示的是二进制,且格式非常不利于阅读,这并不是我们想要的结果。好在json.dumps()为我们提供的两个方法,以帮助我们更好阅读文档。
1.ensure_ascii,能够让中文显示成中文;
2.indent,能够让下一行在第一行的基础上空格。
其用法如下:
import jsonstr = str[(str.find('(')+1):str.rfind(')')] #去掉首尾的圆括号前后部分
dict = json.loads(str)
comments = dict['comments']
#然后for一下就行了
如果是scrapy 看下面代码。
def parse(self, response):
jsonresponse = json.loads(response.body_as_unicode())
item = MyItem()
item["firstName"] = jsonresponse["firstName"]
return item
json是一个文本数据,读取进Python以后,可直接用eval函数解析文本成一个字典。或者可以用py自带的json包。json.load 或者json.loads方法,前面那个可以直接读文本文件,后面那个是读取字符串的。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)