批量请求url 解析json数据

# -*- coding: UTF-8 -*-
#!/usr/bin/python
import urllib2
import urllib
import json
def byteify(input):
if isinstance(input, dict):
return {byteify(key): byteify(value) for key, value in input.iteritems()}
elif isinstance(input, list):
return [byteify(element) for element in input]
elif isinstance(input, unicode):
return input.encode('utf-8')
else:
return input
result="uid price\n"
def request(uid,cid):
uid=str(uid)
cid=str(cid)
print "uid:",uid,"cid:",cid
dataRes = urllib.urlopen('http://host/request&contractId='+cid+'&iamsid='+uid)
#通过urllib模块中的urlopen的方法打开url
data = dataRes.read()
#通过read方法获取返回数据
# print "url返回的json数据:",data
#打印返回信息
dataJSON = json.loads(data)
dataJSON=dataJSON["data"]
for price in dataJSON:
if price["code"] == "kvm" :
print uid,price["priceDate"]
global result
result=result+"\n"+uid+" "+price["priceDate"]
# param=[(70304362,157536),(70304362,157536)]
# for p in param:
# request(p[0],p[1])
with open('uids.txt') as f:
for line in f:
uidcid=line.split()
request(uidcid[0],uidcid[1])
#将返回的json格式的数据转化为python对象,json数据转化成了python中的字典,按照字典方法读取数据
# print "python的字典数据:",dataJSON
# print "字典中的data数据",dataJSON["data"]
# print "lists列表的数据",dataJSON["data"]["lists"][0]
#lists里面的数据是一个列表(按照序列编号来查看数据)
# print weatherJSON["data"]["lists"][0]["SongName"]
#lists的0号数据是一个字典,按照字典方法查看数据
#dumps()默认中文伟ascii编码格式,ensure_ascii默认为Ture
#禁用ascii编码格式,返回Unicode字符串
# dataJson=json.dumps(dataJSON,ensure_ascii=False)
with open("export.txt","w") as f:
f.write(result.encode("utf-8"))

uids.txt 参数文件示例

```txt uids.txt 参数文件 13368 156622 79682 156011 263190 155071

## 讲解
`dataJSON = json.loads(data)`读取的文件是unicode编码,如果要输出utf8格式的需要如下方式:
```python
#调用dumps方法输出字符串
dataStr=json.dumps(dataJSON,ensure_ascii=False)
#以utf8格式编码
print dataStr.encode("utf-8")

参考资料

python爬虫 如何解析json文件 json文件的解析提取和jsonpath的应用 - CSDN博客 python 数据提取之JSON与JsonPATH - AlamZ - 博客园