你平时是怎样使用有道翻译的?
一般人都是这样使用的吧:
1.打开有道翻译
2.输入要翻译的字符
3.复制翻译内容,over
是的,我们都是这样使用有道翻译的,但是今天我要教大家一种通过Python爬虫使用有道翻译的方法!
首先我们来讲一下POST请求和GET请求的区别
最显著的区别就是Get请求的url会附带查询参数,查询参数在QueryString里保存
Post请求的url不会附带查询参数,查询参数在Form表单里保存
什么意思?
举个例子,百度翻译为GET请求,而有道翻译为POST请求
例如百度翻译为Get请求,原始url地址为:https://fanyi.baidu.com/
翻译字符串‘Python’后url地址为:https://fanyi.baidu.com/#en/zh/Python
url地址发生了变化,附带了我们要翻译的字符串
有道翻译为Post请求,原始地址为:http://fanyi.youdao.com/
翻译字符串‘Python’后,地址仍然为:http://fanyi.youdao.com/
url地址并未发生变化,我们的查询参数在Form表单里面保存
ok,知道了POST请求的一些特点,我们就开始POST请求有道翻译吧
首先引入所需模块
import urllib
import urllib.request#导入urllib2
创建一个headers,下面的完整的header是内容我是直接从Fillder里面copy的
在抓包软件Fillder界面的这个地方
其中‘Accept-Encoding: gzip, deflate’这个不能要,否则爬取后为压缩格式
HOST也不要写,Cookie这些也可以不写,为了保持完整性,我还是保留了较多的内容,其实只写一个
‘User-Agent’:'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36’就ok
headers={'Accept':'application/json, text/javascript, */*; q=0.01',
'X-Requested-With':'XMLHttpRequest',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': 'OUTFOX_SEARCH_USER_ID=-1306211847@10.108.160.101; JSESSIONID=aaa75C-jD32s49lp0qyhx; OUTFOX_SEARCH_USER_ID_NCOO=1780482667.2868145; ___rl__test__cookies=1588471894311'
}
获取url地址,这个url地址不是浏览器中显示的,是抓包软件Fillder的POST内容
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'#通过fillder抓包抓到的地址
创建用户接口
key=input('请输入需要翻译的文字:')
创建表单,储存发送到web的表单数据,这里的表单内容也是通过Fillder 抓取到的,表单内容在这个界面
我标蓝的那一行,可以通过使用sublime text 将这一行转成表单格式,在‘查找’–‘替换’那里,这里我就不多写了,我们要翻译的字符串就是 ‘i’ 代表的值,所以我们把 ‘i’ 对应一个变量 ‘key’
formdata={
'type':'AUTO',
'i':key,
'doctype':'json',
'version':'2.1',
'keyfrom':'fanyi.web',
'action':'FY_BY_REALTlME',
}
对表单数据通过urlencode()转码
data=urllib.parse.urlencode(formdata).encode("utf-8")#转码
创建请求,并输出请求内容
#创建请求
request=urllib.request.Request(url,data=data,headers=headers)
#输出请求到的值
print(urllib.request.urlopen(request).read().decode("utf-8"))
OK,运行一下,输入一个‘hello world’
得到一些json格式的代码
复制,打开json.cn
ok,得到了翻译内容
当然了,一般人谁这样用有道翻译啊,这就是一个POST请求的小案例啦,O(∩_∩)O哈哈~
关注欢喜,走向成功~