Google 是目前为网民提供最全面、最好用的网络 API 套件(collection)的公司之一
https://developers.google.com/products/
https://console.developers.google.com/
Google 的开发者社区也提供了 API 用于获取语言翻译、分析、地理位置等信息
API 用 JSON 或 XML 格式表示数据,而不是HTML 格式
利用 HTTP 从网络服务获取信息有四种方式:• GET• POST• PUT• DELETE
GET 就是你在浏览器中输入网址浏览网站所做的事情。
POST 基本就是当你填写表单或提交信息到网络服务器的后端程序时所做的事情。
PUT 在网站交互过程中不常用,但是在 API 里面有时会用到。 PUT 请求用来更新一个对象或信息。
DELETE 用于删除一个对象。
#百度通用翻译API,不包含词典、tts语音合成等资源,如有相关需求请联系translate_api@baidu.com
# coding=utf-8
import http.client
import hashlib
import urllib
import random
import json
def BaiduTransAPI(content):
appid = '20200423000427418' # 填写你的appid
secretKey = 'zlRaKGvVjXLOTFJFt7DO' # 填写你的密钥
httpClient = None
myurl = '/api/trans/vip/translate'
fromLang = 'auto' #原文语种
toLang = 'en' #译文语种
salt = random.randint(32768, 65536)
q= content
sign = appid + q + str(salt) + secretKey
sign = hashlib.md5(sign.encode()).hexdigest()
myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(
salt) + '&sign=' + sign
try:
httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', myurl)
# response是HTTPResponse对象
response = httpClient.getresponse()
result_all = response.read().decode("utf-8")
result = json.loads(result_all)
return result['trans_result'][0]['dst']
except Exception as e:
print (e)
finally:
if httpClient:
httpClient.close()
如下图所示,百度翻译界面右键-检查-NetWork-XHR可以看到如下界面,Request Method为GET,所以可以使用GET方法获取
JSON 比 XML 更受欢迎
主要有两个原因。首先, JSON 文件比完整的 XML 格式小,另一个原因是网络技术的改变
例如下面的 XML 数据用了 98 个字符:
<user><firstname>Ryan</firstname><lastname>Mitchell</lastname><username>Kludgist
</username></user>
同样的 JSON 格式数据只要用 73 个字符,比表述同样内容的 XML 文件要小 36%
{"user":{"firstname":"Ryan","lastname":"Mitchell","username":"Kludgist"}}
Python 使用了一种更加灵活的方式,把 JSON 转换成字典, JSON 数组转换成列表,JSON 字符串转换成 Python 字符串。通过这种方式,就可以让 JSON 的获取和操作变得非常简单。
from urllib import request, parse
import json
def youdao(i):
req_url = 'http://fanyi.youdao.com/translate' # 创建连接接口
# 创建要提交的数据
Form_Date = {}
Form_Date['i'] = i
Form_Date['doctype'] = 'json'
Form_Date['form'] = 'AUTO'
Form_Date['to'] = 'AUTO'
Form_Date['smartresult'] = 'dict'
Form_Date['client'] = 'fanyideskweb'
Form_Date['salt'] = '1526995097962'
Form_Date['sign'] = '8e4c4765b52229e1f3ad2e633af89c76'
Form_Date['version'] = '2.1'
Form_Date['keyform'] = 'fanyi.web'
Form_Date['action'] = 'FY_BY_REALTIME'
Form_Date['typoResult'] = 'false'
data = parse.urlencode(Form_Date).encode('utf-8') # 数据转换
response = request.urlopen(req_url, data) # 提交数据并解析
html = response.read().decode('utf-8') # 服务器返回结果读取
translate_results = json.loads(html) # 以json格式载入
translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式调取
return translate_results; # 返回结果
此处,获得translate_results时先用Python的JSON库解析获得的JSON数据,然后以字典、列表的形式访问的JSON元素
进入有道翻译,右键-检查-NetWork-XHR-Name中的某一项-Response可以看到返回得到的JSON数据