如何直接爬取web端的有道词典,获取他的接口,我们就可以使用它的接口进行翻译。
下面展示了很多数据,这些数据就是在选择翻译时浏览器给服务器发送的数据:
在这几个数据里面
i:需要进行翻译的字符串,
salt与sign 是在以前有道推出他的API服务时,对接口进行了一个反爬虫机制,剩下的几个数据是固定的写法
接下来直接上代码:
# urllib.request 请求模块
# urllib.parse url解析模块
import urllib.request
import urllib.parse
import json
def traslate(contents):
url = ‘http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule’
# i:是需要进行翻译的字符串
# salt:是加密用到的盐,只是我们破击发爬虫的机制
# sign:签名字符串,破解反爬虫机制的关键点
data = {‘i’: contents, ‘from’:’AUTO’,
‘to’:’AUTO’, ‘smartresult’:’dict’,
‘client’:’fanyideskweb’,
# 如今的发爬虫机制不在这里,所以也就不需要这两个 数据
# ‘salt’: ‘1500349255670’,
# ‘sign’: “997742c66698b25b43a3a5030elc2ff2”,
‘doctype’:’json’,
‘version’:’2.1′, ‘keyfrom’:’fanyi.web’,
‘action’:’FY_BY_REALTIME’, ‘typoResult’:’true’}
# data默认是None,此时以GET方式发送请求;当用户给出data参数的时候,改为POST方式发送请求。
# 使用urllib.parse.urlencode()将自定义的data转换成标准格式
# Python encode() 方法以 encoding 指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案。
# UTF-8编码在线转工具可以帮助你把中文转换成UTF-8编码,同时也支持把UTF-8编码过的还原成中文。
# 解决python乱码问题
# 字符串在python内部中是采用unicode的编码方式,所以其他语言先decode转换成unicode编码,再encode转换成utf8编码。
data = urllib.parse.urlencode(data).encode(‘utf-8’)
# urllib.request.urlopen 就是打开url网址的操作
response = urllib.request.urlopen(url, data)
# encode是编码 decode是解码 用utf-8解码
html = response.read().decode(‘utf-8’)
# json.loads将已编码的 JSON 字符串解码为 Python 对象
# 把返回来的json字符串翻译成字典
target = json.loads(html)
print(“翻译结果:%s” % (target[‘translateResult’][0][0][‘tgt’]))
if __name__ ==”__main__”:
print(“输入 0 退出系统”)
while True:
content =input(“请输入需要翻译的内容:”)
if content ==”0″:
break
traslate(content)