转自:http://blog.csdn.net/marksinoberg/article/details/51471812
今天来谈一谈Python解析JSON数据,并写入到本地文件的一个小例子。
思路如下
从一个返回JSON天气数据的网站获取到目标JSON数据串
使用Python解析出需要的部分
写入到本地文件,供其他的应用程序读取
一个可以获得天气信息的URL网址,如天气信息接口 (http://www.weather.com.cn/data/sk/101010100.html)
读取到的结果:(由于是浏览器显示的时候的编码与之不匹配,故出现了乱码,但这并不影响我们对数据的处理)
返回json如下:
{
"weatherinfo": {
"city": "鍖椾含",
"cityid": "101010100",
"temp": "18",
"WD": "涓滃崡椋�",
"WS": "1绾�",
"SD": "17%",
"WSE": "1",
"time": "17:05",
"isRadar": "1",
"Radar": "JC_RADAR_AZ9010_JB",
"njd": "鏆傛棤瀹炲喌",
"qy": "1011",
"rain": "0"
}
}
其中遇到问题,报错如下:
今天来谈一谈Python解析JSON数据,并写入到本地文件的一个小例子。
思路如下
从一个返回JSON天气数据的网站获取到目标JSON数据串
使用Python解析出需要的部分
写入到本地文件,供其他的应用程序读取
完成整个业务需求
一个可以获得天气信息的URL网址,如天气信息接口 (http://www.weather.com.cn/data/sk/101010100.html)
读取到的结果:(由于是浏览器显示的时候的编码与之不匹配,故出现了乱码,但这并不影响我们对数据的处理)
返回json如下:
{
"weatherinfo": {
"city": "鍖椾含",
"cityid": "101010100",
"temp": "18",
"WD": "涓滃崡椋�",
"WS": "1绾�",
"SD": "17%",
"WSE": "1",
"time": "17:05",
"isRadar": "1",
"Radar": "JC_RADAR_AZ9010_JB",
"njd": "鏆傛棤瀹炲喌",
"qy": "1011",
"rain": "0"
}
}
代码如下:
#coding:utf-8
'''
用于解析接口返回的json数据,并将数据打印保存到记事本文件
'''
import os
import urllib,urllib2
import json
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
# 获取到目标URL的JSON数据串
def getHtml(url):
page = urllib2.urlopen(url)
html = page.read()
return html
def getValueDict(data):
data = json.loads(data)
content = data['weatherinfo']
return content
def parseTOUTF8(data):
result = json.dumps(data,ensure_ascii=False)
return result
def prettyData(data):
result = 'My Weather Info :\n'
for item in data:
result = result + item + '\t' + parseTOUTF8(data[item]) + '\n'
return result
def writeToLocal(filepath,filename,data):
# file = os.open(filepath+filename,'wb')
file = open(os.path.join(filepath,filename),'w')
file.write(data)
file.close()
print '数据已经成功写入到本地文件'
if __name__ == "__main__":
url = 'http://www.weather.com.cn/data/sk/101010100.html'
page = getHtml(url)
text = getValueDict(page)
content = prettyData(text)
print content
path='F:'
writeToLocal(path,'MyWeatherInfo.txt',content)
print '天气信息获取并更新完毕'
其中遇到问题,报错如下:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 24-25: ordinal not in range(128)
解决方法如下:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
参考自文章:
http://wangye.org/blog/archives/629/
本文介绍了一个简单的Python脚本,该脚本能够从指定的URL获取JSON格式的天气数据,解析所需信息,并将其保存到本地文件中。文章还提供了解决Unicode字符编码问题的方法。

1877

被折叠的 条评论
为什么被折叠?



