利用urllib.urlopen向有道翻译发送数据获得翻译结果

代码

from urllib import request
from urllib import parse
import json

if __name__ == "__main__":
    # 模拟有道翻译发送请求,参数都来自Netword中对应请求

    # 1 Headers中的Request URL
    Request_URL = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

    # 2 创建Form_Data字典,封装参数,参数来自Form Data
    Form_Data = {}
    Form_Data['i'] = 'apple'
    Form_Data['from'] = 'en'
    Form_Data['to'] = 'zh-CHS'
    Form_Data['smartresult'] = 'dict'
    Form_Data['client'] = 'fanyideskweb'
    Form_Data['salt'] = '1524113071611'
    Form_Data['sign'] = 'e307ad5e5edfe33b678657bb693bed28'
    Form_Data['doctype'] = 'json'
    Form_Data['version'] = '2.1'
    Form_Data['keyfrom'] = 'fanyi.web'
    Form_Data['action'] = 'FY_BY_CLICKBUTTION'
    Form_Data['typoResult'] = 'false'

    # 3 使用urlencode方法转换标准格式
    data = parse.urlencode(Form_Data).encode('utf-8')
print(data)
# 4 传递Request对象和转换完格式的数据 response = request.urlopen(Request_URL, data) # 5 读取信息并解码 html = response.read().decode('utf-8') print(html) # 6 使用JSON translate_results = json.loads(html) # 找到翻译结果 translate_results = translate_results['translateResult'][0][0]['tgt'] # 打印翻译信息 print("翻译的结果是:%s" % translate_results)

 

{"errorCode":50} 的解决办法

  去除url里面的_o字段,就可以解决问题

posted @ 2018-04-19 13:01  wbinbin  阅读(126)  评论(0)    收藏  举报