本篇文章做法参考了https://www.bilibili.com/video/av4050443/?p=55这个视频中的方法,并在此基础上加以修改,最终实现的结果如下:
在爬取有道词典之前,我们应该先打开有道词典的网址:http://fanyi.youdao.com/ , 然后 右键检查—>network—>translate 一项。
然后在有道翻译界面输入要翻译的内容,点击翻译,在上述路径下就可以看到自己想要翻译的东西:
现在跳到Headers的地方,然后滚动到最下面,可以看到有一个Form Data的地方,这个下面展示了许多的数据,这些数据就是你在点击翻译的时候浏览器给服务器发送的数据:
针对这个东西,我们使用列表对其进行保存,并使用’utf-8’的方式进行解码_(因为在headers中信息告诉我们用utf-8)_。然后使用Python里面的urllib.request()模块对进行导入,接下来对导入的内容进行读取,读取的时候也使用“utf-8”进行解码。使用json对最后的解码结果进行再次的提取,将我们想要的信息提取出来*(这里的内容参考上面给的链接视频中的讲解)。*
整个程序的设计思路是,在while(true)循环里运行,当输入为特定值的时候,程序break跳出循环,否则程序将一直作为翻译器运行下去。
附上代码:
import urllib.request as ur
import urllib.parse
import json
while(1):
content = input("请输入需要翻译的内容:")
if(content !='我想结束了'):
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
# url_new = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data={}
data['i'] = content
data['type'] = 'AUTO'
data['smartresult']='dict'
data['client'] = 'fanyideskweb'
data['salt'] = '15434915589221'
data['sign'] = '46726cf43402922bd5500ad9c839ed5c'
data['ts'] = '1543491558922'
data['bv'] = 'db1af4c4f5ec7235b96c7182eecd9573'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CLICKBUTTION'
data['typoResult'] = 'false'
data = urllib.parse.urlencode(data).encode('utf-8')
response = ur.urlopen(url,data)
html = response.read().decode('utf-8')
target = json.loads(html)
print("翻译结果:%s"%(target['translateResult'][0][0]['tgt']))
else:
print("大爷下次继续来玩啊")
break
有道OS:天天拿我练手做测试,我不要面子的啊???