1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > python爬虫|post的响应 利用python实现有道翻译翻译

python爬虫|post的响应 利用python实现有道翻译翻译

时间:2021-06-30 18:49:56

相关推荐

python爬虫|post的响应 利用python实现有道翻译翻译

1.post请求方式

1.1 post和get的区别

1.2 post特点

2.利用request.urllib实现

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

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

2.3 利用request.urllib实现请求

2.4 美化输出结果

3.利用request实现

请求方式有两种,分别是get和post。

介绍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输入查询内容并转为字节流

import jsonimport urllib.parseimport urllib.requestimport urllib.parse# 请输入你要翻译的内容key = input('请输入您要翻译的内容:')# 把提交的form 表单的数据转换为bytes类型的数据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')

2.3 利用request.urllib实现请求

# 发请求获取响应 注意 去掉_ourl = '/translate?smartresult=dict&smartresult=rule'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0'}req = urllib.request.Request(url,data=data,headers=headers)res = urllib.request.urlopen(req)html = res.read().decode('utf-8')

2.4 美化输出结果

html输出的结果较为不美观,并且为str,不是字典,不能通过关键字取出

所以需要将html转为字典,再进行取值

# 把json类型的字符串转换为字典r_dict = json.loads(html)# {"type":"EN2ZH_CN","errorCode":0,"elapsedTime":1,"translateResult":[[{"src":"name","tgt":"的名字"}]]}r = r_dict['translateResult']#[[{"src":"name","tgt":"的名字"}]]result = r[0][0]['tgt'] #[{"src":"name","tgt":"的名字"}] -->{"src":"name","tgt":"的名字"}print(result)

3.利用requests实现

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

import requestsimport jsonkey = 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 = '/translate?smartresult=dict&smartresult=rule'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)res.encoding = 'utf-8'html = res.textr_dict = json.loads(html)result = r_dict['translateResult'][0][0]['tgt']print(result)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。