3.POST方法请求有道翻译

目标:
—学会查找POST请求文报,从中获取Request URL,和post表单
—学会构造表单,通过requests库和post方法提交请求
—实现控制台输入词语,自动获取有道翻译内容

HTTP的POST请求方法:
—以form表单形式向服务器提交数据
—特点:所有提交数据都附在报文主体(Body)中

JSON:
—JavaScript对象表示法(JavaScript Object Notation)
—是存储和文本交换信息的语法
—JSON最基本的形式是对象的键值对:
{
    "firstName":"Peter",
    "lastName":"Parker",
    "nickName":"Spider man"
}
—JSON也可以在键值对中引入数组[]的形式:
{
"hero":[{
    "firstName":"Peter",
    "lastName":"Parker",
    "nickName":"Spider man"
}],
"badman":"Kraven the Hunter"
}
JSON的数组(array)
Python的列表(list)
JSON        Python
object        dict
array        list

实现思路:
—分析头部,找到关键POST请求/响应过程
—获取Requests URL
—获取并构建post表单
—基于requests.post()方法提交翻译请求
—实现控制台输入词语触发翻译

核心原理:
requests的post请求方法
—requests.post(url,data=data)
—eg. response=requests.post('https://xxxxxx',data=form)
JSON字符串转换为Python对应格式
—json.loads(json_str)
—loads方法把JSON格式字符串解码为Python的对象

import requests
import json
#1.基于控制台获取输入,待翻译词语
content=input("请输入: ")

# 有道翻译网页版 输入一个词 右键-检查-XHR-Headers
#2.设定待请求的url
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

#3.建立post表单
post_form={'i': content,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': '15594607596192',
'sign':' a34ecbb30edd43352ca3cfcf15613d5b',
'ts': '1559460759619',
'bv': '363eb5a1de8cfbadd0cd78bd6bd43bee',
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_REALTlME'
}

#4.提交post请求
response=requests.post(url,data=post_form)

#5.接收相应结果,并且解析提取
result_json=response.text
trans_dict=json.loads(result_json)
result=trans_dict['translateResult'][0][0]['tgt']
#6.打印翻译结果
print("打印结果:")
print(result)
print()

 

你可能感兴趣的:(Python爬虫)