Python爬虫爬取有道实现翻译功能


Posted in Python onNovember 27, 2020

准备

首先安装爬虫urllib库

pip install urllib

获取有道翻译的链接url

Python爬虫爬取有道实现翻译功能

需要发送的参数在form data里

Python爬虫爬取有道实现翻译功能

示例

import urllib.request
import urllib.parse

url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
data = {}
data['i'] = 'i love python'
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '16057996372935'
data['sign'] = '0965172abb459f8c7a791df4184bf51c'
data['lts'] = '1605799637293'
data['bv'] = 'f7d97c24a497388db1420108e6c3537b'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_REALTlME'
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url,data)
html = response.read().decode('utf-8')
print(html)

运行会出现50的错误,这里需要将url链接的_o删除掉

Python爬虫爬取有道实现翻译功能

删除后运行成功

Python爬虫爬取有道实现翻译功能

但是这个结果看起来还是太复杂,需要在进行优化

导入json,然后转换成字典进行过滤

import urllib.request
import urllib.parse
import json

url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data = {}
data['i'] = 'i love python'
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '16057996372935'
data['sign'] = '0965172abb459f8c7a791df4184bf51c'
data['lts'] = '1605799637293'
data['bv'] = 'f7d97c24a497388db1420108e6c3537b'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_REALTlME'
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url,data)
html = response.read().decode('utf-8')

req = json.loads(html)
result = req['translateResult'][0][0]['tgt']
print(result)

Python爬虫爬取有道实现翻译功能
但是这个程序只能翻译一个单词,用完就废了。于是我在进行优化

import urllib.request
import urllib.parse
import json

def translate():
  centens = input('输入要翻译的语句:')
  url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
  head = {}#增加请求头,防反爬虫
  head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
  data = {}#带上from data的数据进行请求
  data['i'] = centens
  data['from'] = 'AUTO'
  data['to'] = 'AUTO'
  data['smartresult'] = 'dict'
  data['client'] = 'fanyideskweb'
  data['salt'] = '16057996372935'
  data['sign'] = '0965172abb459f8c7a791df4184bf51c'
  data['lts'] = '1605799637293'
  data['bv'] = 'f7d97c24a497388db1420108e6c3537b'
  data['doctype'] = 'json'
  data['version'] = '2.1'
  data['keyfrom'] = 'fanyi.web'
  data['action'] = 'FY_BY_REALTlME'
  data = urllib.parse.urlencode(data).encode('utf-8')
  req = urllib.request.Request(url,data,head)
  response = urllib.request.urlopen(req)
  html = response.read().decode('utf-8')
  req = json.loads(html)
  result = req['translateResult'][0][0]['tgt']
  # print(f'中英互译的结果:{result}')
  return result
t = translate()
print(f'中英互译的结果:{t}')

优化完成,效果还行。

Python爬虫爬取有道实现翻译功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python可变参数函数用法实例
Jul 07 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
用python制作游戏外挂
Jan 04 Python
详细解读tornado协程(coroutine)原理
Jan 15 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
Aug 22 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
Jan 06 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
基于python代码批量处理图片resize
Jun 04 Python
python爬虫中采集中遇到的问题整理
Nov 27 #Python
python 用opencv实现图像修复和图像金字塔
Nov 27 #Python
Python函数调用追踪实现代码
Nov 27 #Python
Numpy中np.max的用法及np.maximum区别
Nov 27 #Python
python 实现aes256加密
Nov 27 #Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 #Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 #Python
You might like
第五节 克隆 [5]
2006/10/09 PHP
怎样在PHP中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
mysql时区问题
2008/03/26 PHP
php include和require的区别深入解析
2013/06/17 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
基于ajax和jsonp的原生封装(实例)
2017/10/16 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
react的hooks的用法详解
2020/10/12 Javascript
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
python练习程序批量修改文件名
2014/01/16 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
迎新春趣味活动方案
2014/08/24 职场文书
县委务虚会发言材料
2014/10/20 职场文书
太行山上观后感
2015/06/05 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书