python爬虫使用requests库利用百度翻译开发者平台ap
2020-03-26 本文已影响0人
_Mirage
如题, 刚学习了requests的post方法, 现在用百度翻译开发者平台提供的接口来实践下:
首先通过 https://fanyi-api.baidu.com/这个链接进入开发者平台, 点击产品服务:
image.png进入注册界面完成开发者的注册: image.png
这里有两个版本可供选择:
一般用来玩玩的选第一个就可以了, 毕竟完全免费.
申请完毕后进入 管理控制台, 可以在里面看到自己的appid和密钥:
image.png
有了这些就可以开始编程了:
1 .首先api地址有两个:
通用翻译API HTTP地址:http://api.fanyi.baidu.com/api/trans/vip/translate
通用翻译API HTTPS地址:https://fanyi-api.baidu.com/api/trans/vip/translate
基本上用哪个都可以, https和http的区别也不是太大, 好像https更安全? 相比于http有个套接字什么的.
-
请求数据格式:
image.png
这里 get和 post都可以, 推荐使用post
-
使用python requests.post 函数发送数据:
image.png -
处理接收到的数据(json格式, 详细说明在上篇文章):
image.png -
运行结果 :
image.png
image.png
总的就这些步骤, 不是很复杂.
第二个就是hashlib, 百度翻译开发者api要求我们将数据用MD5算法加密, python给我们实现好的许多跟密码学有关的算法都在hashlib中:
image.png
完整代码如下:
# coding='utf-8'
import requests
import uuid
import hashlib
# 1.创建百度翻译api需要的数据格式
input_key = input('输入待翻译的数据(只支持中英文自动转换):\n')
# 实现中英文互译
data = {
'q': input_key,
'from': 'auto',
'to': 'auto',
# 百度翻译开发者平台申请
'appid': '换成自己的appid',
# 利用python标准库生成标准格式的salt数据
'salt': str(uuid.uuid4()),
}
# 按指定要求生成签名数据
sign = hashlib.md5((data['appid']+
data['q']+data['salt']+
'换成自己的密钥').encode('utf-8'))
# 将bytes类型转化成16进制数据
sign = sign.hexdigest()
data['sign'] = sign
# 2.向百度翻译开发者接口url发送数据,利用post
url = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
# 利用requests的特点:即使url或者data中格式即使不是标准
# urlencoded类型, 也可以完成自动转换.
# 永远不要忘记一个合格spider的自我修养: 加user-agent
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
}
response = requests.post(url, headers=headers, data=data)
response_json = response.json()
# 3.处理接收到的json数据
result_list = response_json['trans_result']
result_str = ''
result_len = len(result_list) - 1
for index, each in enumerate(result_list):
result_str += each['dst']
if index != result_len:
result_str += '\n'
print('{}'.format(result_str))