python:3.6.5
未用第三方库/一个简单的爬虫/用于实现有道翻译,查词无忧了。
问题?
其实写这个的过程中,遇到了一个问题,当前爬起的结果,只有一个结果,并没有爬取到更多的结果。
在网上也找了很久,一直没有找到答案,走过路过,如果有缘人你看到了我的问题刚好又有解决方案,请帮忙留言,谢谢.
这个就是我这到的返回结果:
而事实上在浏览器端看到返回的json是这样的;
百思不得其解,而想到为selenium,但这个翻译速度实在是太慢了,无法接受。
不多说了,先上code:
#!/user/bin/python
#-*- coding:utf-8 -*-
from urllib import request
from urllib import parse
import json
def youdaoTranslate(value, count):
if value == '':
print('输入内容为空@_@')
return False
else:
# Request URL
responseURL = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
# 待提交准备Post给url的Data:定义为dict
form_Data = {}
form_Data['i'] = value
form_Data['from'] = 'AUTO'
form_Data['to'] = 'AUTO'
form_Data['smartresult'] = 'dict'
form_Data['client'] = 'fanyideskweb'
form_Data['doctype'] = 'json'
form_Data['version'] = '2.1'
form_Data['keyfrom'] = 'fanyi.web'
form_Data['action'] = 'FY_BY_REALTIME'
form_Data['typoResult'] = 'false'
# 使用urlencode方法转换标准格式
data = parse.urlencode(form_Data).encode('utf-8')
response = request.urlopen(responseURL,data)
html = response.read().decode('utf-8')
# 使用JSON
translate_result = json.loads(html)
# print(translate_result)
# 找到翻译结果
# 这里推荐一个格式化JSON的好工具:https://c.runoob.com/front-end/53
translate_result_main = translate_result['translateResult'][0][0]['tgt']
# 打印翻译结果
print(f'{count}. {translate_result_main}\n\n')
return True
if __name__ == '__main__':
try:
count = 1
while True:
print('-'*26)
word = input('请输入待翻译的单词或句子:\n').strip()
if youdaoTranslate(word, count) == True:
count += 1
except KeyboardInterrupt:
print('\a手动退出!欢迎再来')