将assic编码的json字符串转化为utf-8编码的json字符串
2017-12-25 21:16
531 查看
一、导入模块
import urllib.request import urllib.parse import json
二、指定url,构造headers,构造请求参数
1.指定urlurl = 'http://fanyi.baidu.com/v2transapi'
2.构造headers
headers = { 'Host': 'fanyi.baidu.com', 'Connection': 'keep-alive', # 'Content-Length': '7', 不能固定长度 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Origin': 'http://fanyi.baidu.com', 'X-Requested-With': 'XMLHttpRequest', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Referer': 'http://fanyi.baidu.com/translate', # 'Accept-Encoding': 'gzip, deflate', #不接受压缩文件 'Accept-Language': 'zh-CN,zh;q=0.9', 'Cookie': 'BIDUPSID=9F5816DD3088F4291EA4C12FFC2ABCDE; BAIDUID=78AF1CE91C8F84BD601F6E2778C618DA:FG=1; PSTM=1513827071; FP_UID=49cb193525cef45caf0af69c1e64ccf6; BDRCVFR[DDAxsax1-qs]=mk3SLVN4HKm; H_PS_PSSID=1454_21125_25177; PSINO=2; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; locale=zh; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1514168525; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1514168525; to_lang_often=%5B%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%2C%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%5D; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; from_lang_often=%5B%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%2C%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%5D', }
3.构造请求参数(参数格式与真实参数一致,可通过抓包工具观察)
word = 'wolf' data = { 'from': 'en', 'to': 'zh', 'query': word, 'transtype': 'realtime', 'simple_means_flag': '3', } data = urllib.parse.urlencode(data).encode('utf-8')
三、模拟请求
request = urllib.request.Request(url=url,headers=headers,data=data)
四、发送请求
reponse = urllib.request.urlopen(request)
五、获取结果(结果显示,获取的数据为assii编码)
result = reponse.read().decode('utf-8')
六、存储数据结果(需要将assii编码转化为utf-8)
1.将json格式的字符串转化为python对象obj = json.loads(result)
2.将python对象转为json格式字符串,注意,要添加第二个参数,禁用ascii编码
string = json.dumps(obj,ensure_ascii=False)
3.将字符串以utf-8格式写入文件
with open('wolf.json','w',encoding='utf-8') as f1: f1.write(string)
相关文章推荐
- encode_json 转换给定的perl数据结构为一个UTF-8编码的 2进制字符串 decode_json把UTF-8字节转换成字符
- php array转化为utf-8编码以便于转化为json数据
- 一个很简单的unicode编码字符串转化为utf-8编码字符窜的方法
- python 字符串编码 str和unicode 区别以及相互转化 decode('utf-8') encode('utf-8')
- javascript对象转化成json字符串
- 强大的json字符串对象,转化为object对象
- Json对象与Json字符串的转化、JSON字符串与Java对象的转换
- Java如何将字符串转化为JSON(json-lib)
- 如何写一个嵌套实体类,赋值,转化为JSON格式的字符串
- json对象和json字符串之间的转化
- C++里将string类字符串(utf-8编码)分解成单个字(可中英混输)
- JS中把字符串转化为JSON对象
- 字符串和JSON对象的互相转化
- JS解析json数据(如何将json字符串转化为数组)
- 如果是GBK编码的返回该字符串的utf8编码格式 如果该字符串是UTF-8编码的直接返回
- UTF-8编码)将字符串写入文件,当字符串中包含中文时,出现写入文件的数据残缺,而当不包含中文时,写入文件的数据正常
- JSON字符串如何转化成对象?
- Java字符串编码转换UTF-8
- Android进步之十四:使用jackon的ObjectMapper的writeValueAsString方法可以把java对象转化成json字符串
- java中字符串在 utf-8 gbk unicode 编码下占内存位数