1. 程式人生 > >將assic編碼的json字串轉化為utf-8編碼的json字串

將assic編碼的json字串轉化為utf-8編碼的json字串

一、匯入模組

import urllib.request
import urllib.parse
import json

二、指定url,構造headers,構造請求引數

  • 1.指定url
url = '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)