打开有道翻译官网:
通过F12,找到网络一栏,寻找”POST”请求,并在“消息头”下找到请求网址,即翻译的原网址 :
观察“参数”一栏,在“数据表单”中找到了输入的字符串赋值给了参数“i”:
观察“响应”一栏,在“响应载荷”中找到了输出的字符串:
此处为字典格式,在代码分析中将对其进行解析。
在“消息头”的“请求头”中找到“User-Agent”:
不同设备对这一段的代码都不同,所以针对自己的设备,复制下这一段代码,用于后续代码编写,这是网站判断是否为爬虫的一个依据。
针对表单数据进行编写,可加入输入提示,并将输入的值赋值给参数“i”:
层层解析字典:
通过输出不断测试解析结果,得到最终翻译结果:
粘贴之前复制的“User-Agent”,以此避开网站第一步爬虫检索:
'''爬虫有道词典'''
import urllib.request
import urllib.parse
import json
import time
while True:
content=input('请输入需要翻译的内容(输入“ql”退出程序):')
if content=='ql':
break
#获取后台url
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
head={
}
#隐藏爬虫信息
head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0'
#编辑表单
data={
}
data['i']=content
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']='15590456742344'
data['sign']='238073a9cc158731f9feea2f63589c3f'
data['ts']='1559045674234'
data['bv']='e2a78ed30c66e16a857c5b6486a1d326'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_CLICKBUTTION'
#确认新表单
data=urllib.parse.urlencode(data).encode('utf-8')
#传入url和data
req=urllib.request.Request(url,data,head)
#获得响应
response=urllib.request.urlopen(url,data)
html=response.read().decode('utf-8')
'''
print(html)
target=json.loads(html)
print(target)
print(target['translateResult'])
print(target['translateResult'][0][0])
print(target['translateResult'][0][0]['tgt'])
'''
target=json.loads(html)
#获取结果
print('翻译结果:%s'%(target['translateResult'][0][0]['tgt']))
#设置间隔时间
time.sleep(5)