python之post的响应爬虫——利用python实现有道翻译在线翻译
利用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实现有道翻译在线翻译相关推荐
- 利用手机工具教你快速完成英语翻译在线翻译中文
利用手机工具教你快速完成英语翻译在线翻译中文?世界那么大,谁都想出去看看,可是当你遇到语言问题没法解决时,你还想出去看看吗?恐怕没人愿意,所以今天小编就为大家带来一个英语在线翻译为中文的方法,让你可以 ...
- 中日翻译在线翻译如何利用日语翻译软件完成
中日翻译在线翻译如何利用日语翻译软件完成?对于喜欢看日漫的朋友们来说,肯定都有一颗去日本旅游的心,但是去日本旅游首先我们要解决中日语翻译的问题.今天小编将要分享给大家一个方法,帮助大家快速完成中日语翻 ...
- python朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)
前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...
- Python爬虫 | 利用python爬虫获取想要搜索的数据
这篇文章主要介绍了利用Python爬虫采集想要搜索的信息(利用某du的接口实现)并且处理掉它的反爬手段,文中示例代码很详细,具有一定的学习价值,感兴趣的小伙伴快来一起学习吧. ☀️新人小白博主
- python爬去百度文库_利用Python语言轻松爬取数据[精品文档]
利用 Python 语言轻松爬取数据 对于小白来说,爬虫可能是一件非常复杂. 技术门槛很高的事情. 比如有人认为学爬虫必须精通 Python ,然后哼哧哼哧系统学习 Python 的每个知识点,很久之 ...
- python中什么是数据驱动_利用Python如何实现数据驱动的接口自动化测试
前言 大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取.下面话不多说了,来一起看看详细的介绍吧. 1.需求 某API,GET方法,token,m ...
- python爬取百度文库_利用Python语言轻松爬取数据
利用 Python 语言轻松爬取数据 对于小白来说,爬虫可能是一件非常复杂. 技术门槛很高的事情. 比如有人认为学爬虫必须精通 Python ,然后哼哧哼哧系统学习 Python 的每个知识点,很久之 ...
- python实现背景抠除_利用Python代码实现一键抠背景功能
这篇文章主要给大家介绍了关于如何利用Python代码实现一键抠背景的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 前 ...
- 如何用python进行相关性分析_如何利用python进行时间序列分析
题记:毕业一年多天天coding,好久没写paper了.在这动荡的日子里,也希望写点东西让自己静一静.恰好前段时间用python做了一点时间序列方面的东西,有一丁点心得体会想和大家分享下.在此也要特别 ...
最新文章
- win8中使用BitLocker加密
- 使用.net开发手机管理软件 (七) IrMC简介
- Cracer渗透视频课程笔记——基础知识(2)
- 第二章:方法区和运行时常量池溢出
- UnixLinux技术文章目录(2015-12-22更新)
- getordefault java_Java map.getOrDefault()方法的用法详解
- iOS6、7、8、9新特性汇总和适配说明
- 20191114每日一句
- 图片怎样把背景去掉?怎么把图片背景透明?
- VSCode安装教程(超详细)
- maven(2)——修改maven的setting.xml文件,更改下载地址和镜像
- 计算机汉字50字一分钟,一分钟的演讲稿一分钟演讲稿50字
- 4字母域名价值高吗?目前值多少钱?
- 能将PDF转成PPT图片文字的转换器
- 机器学习常见任务类型
- imx6ull中断体系之GICV2
- 蓝光发展两度出售优质资产,加速资金回笼背后,只剩“无奈”二字
- Jmeter书中不会教你的(94)——将时间戳转换为日期格式
- Ni Multisim 101序列检测器实验报告
- OO,OO以后,及其极限(转)
热门文章
- Flink流处理Demo(含源码)
- 计算机网络 复习题(带答案)
- .Fill()的使用
- 关于媒体对于XP退役一事的各种观点:装疯卖傻究竟给谁看呢?
- 小型水库雨水情测报设施、水库安全监测设施——水库信息化系统
- ubuntu常用命令 mv:移动文件或文件夹
- 指数加权平均、动量梯度下降法、RMSprop、Adam优化算法
- FP6291 输出5V1A,12V0.4A升压芯片
- ProGuard混淆代码
- c语言利用指针函数等完成学生成绩管理系统,课程设计C语言可视化程序学生成绩管理系统...