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 12 Python
Python字典实现简单的三级菜单(实例讲解)
Jul 31 Python
Python实现的概率分布运算操作示例
Aug 14 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
Python Numpy库安装与基本操作示例
Jan 08 Python
Python:Numpy 求平均向量的实例
Jun 29 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
python的pip有什么用
Jun 17 Python
Python爬虫实现HTTP网络请求多种实现方式
Jun 19 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 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
相对路径转化成绝对路径
2007/04/10 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
php内存缓存实现方法
2015/01/24 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
php实现网站留言板功能
2015/11/04 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
Python读取网页内容的方法
2015/07/30 Python
python 美化输出信息的实例
2018/10/15 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
J2EE面试题
2016/03/14 面试题
函授本科自我鉴定
2014/02/04 职场文书
企业指导教师评语
2014/04/28 职场文书
小班评语大全
2014/05/04 职场文书
电子专业自荐信
2014/07/01 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
贪污检举信范文
2015/03/02 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL
Linux中如何安装并部署Redis
2022/04/18 Servers