利用python实现有道翻译在线翻译

  • 1 post的请求方式
    • 1.1 post和get的区别
    • 1.2 post特点
  • 2.利用request.urllib实现
    • 2.1 寻找网页源代码翻译的位置
    • 2.2 输入查询内容并转为字节流
    • 2.3 利用request.urllib实现请求
    • 2.4 美化输出结果
  • 3.利用requests实现

请求方式有两种,分别是get和post。之前我们用百度贴吧的方式示例了get请求的爬取,本篇博文主要介绍的post请求方式的爬取

1 post的请求方式

1.1 post和get的区别

GET : 查询参数都会在URL上显示出来(例如:百度查询字段)
POST : 查询参数和需要提交数据是隐藏在Form表单⾥的,不会在URL地址上显示出来(例如:有道翻译)

1.2 post特点

  • POST 特点
    (1)在Request方法中添加data参数 (2)urllib.request.Request(url,data=data,headers=headers)
    (3)data :表单数据以bytes类型提交,不能是str

2.利用request.urllib实现

2.1 寻找网页源代码翻译的位置

(1)右键-检查–> 查看源代码
(2)点击-Network–>查看运行状态
(3)在网页上方输入翻译的内容–如:你好–在Network界面找到translate起头的网址
(4)点开translate网址–查阅Form Data–> Form data 存储了所有查询需要的数据(其中i 是查询输入内容)

2.2 输入查询内容并转为字节流

# 把提交的form表单的数据转换为bytes类型的数据
# 请输入你要翻译的内容
key = input('请输入您要翻译的内容:')
data = {'i': key,'from': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','salt': '15880623642174','sign': 'c6c2e897040e6cbde00cd04589e71d4e','ts': '1588062364217','bv': '42160534cfa82a6884077598362bbc9d','doctype': 'json','version': '2.1','keyfrom':'fanyi.web','action': 'FY_BY_CLICKBUTTION'
}data = urllib.parse.urlencode(data)  # 把data转换十六进制
data = bytes(data,'utf-8') # 把data转换成字节流

2.3 利用request.urllib实现请求

# 利用request.urllib实现请求
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'  # 注意此处的url是Request URL,并且需要把_o去掉才能实现,否则返回的html是{"errorCode":50}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
req = urllib.request.Request(url,headers=headers,data=data)  # headers是传入个人设置、data是输入数据
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
print(html,type(html))
# 结果: {"type":"ZH_CN2EN","errorCode":0,"elapsedTime":1,"translateResult":[[{"src":"你好","tgt":"hello"}]]}  <class 'str'>

2.4 美化输出结果

# html输出的结果较为不美观,并且为str,不是字典,不能通过关键字取出
# 所以我们需将html转为字典,再进行取值
import json
r_dict = json.loads(html)   # 把json类型的字符串转换为字典
r = r_dict['translateResult'] #  [[{"src":"name","tgt":"的名字"}]]
result = r[0][0]['tgt'] # [{"src":"name","tgt":"的名字"}] -->{"src":"name","tgt":"的名字"}
print(result)  # 你好

3.利用requests实现

requests方法的实现直接采用requests.post()方法实现就好

# 利用requests方法
import requestskey = input('请输入您要翻译的内容:')
data = {'i': key,'from': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','salt': '15880623642174','sign': 'c6c2e897040e6cbde00cd04589e71d4e','ts': '1588062364217','bv': '42160534cfa82a6884077598362bbc9d','doctype': 'json','version': '2.1','keyfrom':'fanyi.web','action': 'FY_BY_CLICKBUTTION'
}
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'  # 注意此处的url是Request URL,并且需要把_o去掉才能实现,否则返回的html是{"errorCode":50}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
res = requests.post(url,data=data,headers=headers) # 采用post方法
res.encoding = 'utf-8'
html = res.text
r_dict = json.loads(html)
result = r_dict['translateResult'][0][0]['tgt']
print(result)

python之post的响应爬虫——利用python实现有道翻译在线翻译相关推荐

  1. 利用手机工具教你快速完成英语翻译在线翻译中文

    利用手机工具教你快速完成英语翻译在线翻译中文?世界那么大,谁都想出去看看,可是当你遇到语言问题没法解决时,你还想出去看看吗?恐怕没人愿意,所以今天小编就为大家带来一个英语在线翻译为中文的方法,让你可以 ...

  2. 中日翻译在线翻译如何利用日语翻译软件完成

    中日翻译在线翻译如何利用日语翻译软件完成?对于喜欢看日漫的朋友们来说,肯定都有一颗去日本旅游的心,但是去日本旅游首先我们要解决中日语翻译的问题.今天小编将要分享给大家一个方法,帮助大家快速完成中日语翻 ...

  3. python朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  4. Python爬虫 | 利用python爬虫获取想要搜索的数据

    这篇文章主要介绍了利用Python爬虫采集想要搜索的信息(利用某du的接口实现)并且处理掉它的反爬手段,文中示例代码很详细,具有一定的学习价值,感兴趣的小伙伴快来一起学习吧. ☀️新人小白博主

  5. python爬去百度文库_利用Python语言轻松爬取数据[精品文档]

    利用 Python 语言轻松爬取数据 对于小白来说,爬虫可能是一件非常复杂. 技术门槛很高的事情. 比如有人认为学爬虫必须精通 Python ,然后哼哧哼哧系统学习 Python 的每个知识点,很久之 ...

  6. python中什么是数据驱动_利用Python如何实现数据驱动的接口自动化测试

    前言 大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取.下面话不多说了,来一起看看详细的介绍吧. 1.需求 某API,GET方法,token,m ...

  7. python爬取百度文库_利用Python语言轻松爬取数据

    利用 Python 语言轻松爬取数据 对于小白来说,爬虫可能是一件非常复杂. 技术门槛很高的事情. 比如有人认为学爬虫必须精通 Python ,然后哼哧哼哧系统学习 Python 的每个知识点,很久之 ...

  8. python实现背景抠除_利用Python代码实现一键抠背景功能

    这篇文章主要给大家介绍了关于如何利用Python代码实现一键抠背景的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 前 ...

  9. 如何用python进行相关性分析_如何利用python进行时间序列分析

    题记:毕业一年多天天coding,好久没写paper了.在这动荡的日子里,也希望写点东西让自己静一静.恰好前段时间用python做了一点时间序列方面的东西,有一丁点心得体会想和大家分享下.在此也要特别 ...

最新文章

  1. win8中使用BitLocker加密
  2. 使用.net开发手机管理软件 (七) IrMC简介
  3. Cracer渗透视频课程笔记——基础知识(2)
  4. 第二章:方法区和运行时常量池溢出
  5. UnixLinux技术文章目录(2015-12-22更新)
  6. getordefault java_Java map.getOrDefault()方法的用法详解
  7. iOS6、7、8、9新特性汇总和适配说明
  8. 20191114每日一句
  9. 图片怎样把背景去掉?怎么把图片背景透明?
  10. VSCode安装教程(超详细)
  11. maven(2)——修改maven的setting.xml文件,更改下载地址和镜像
  12. 计算机汉字50字一分钟,一分钟的演讲稿一分钟演讲稿50字
  13. 4字母域名价值高吗?目前值多少钱?
  14. 能将PDF转成PPT图片文字的转换器
  15. 机器学习常见任务类型
  16. imx6ull中断体系之GICV2
  17. 蓝光发展两度出售优质资产,加速资金回笼背后,只剩“无奈”二字
  18. Jmeter书中不会教你的(94)——将时间戳转换为日期格式
  19. Ni Multisim 101序列检测器实验报告
  20. OO,OO以后,及其极限(转)

热门文章

  1. Flink流处理Demo(含源码)
  2. 计算机网络 复习题(带答案)
  3. .Fill()的使用
  4. 关于媒体对于XP退役一事的各种观点:装疯卖傻究竟给谁看呢?
  5. 小型水库雨水情测报设施、水库安全监测设施——水库信息化系统
  6. ubuntu常用命令 mv:移动文件或文件夹
  7. 指数加权平均、动量梯度下降法、RMSprop、Adam优化算法
  8. FP6291 输出5V1A,12V0.4A升压芯片
  9. ProGuard混淆代码
  10. c语言利用指针函数等完成学生成绩管理系统,课程设计C语言可视化程序学生成绩管理系统...