美文网首页
python爬虫使用requests库利用百度翻译开发者平台ap

python爬虫使用requests库利用百度翻译开发者平台ap

作者: _Mirage | 来源:发表于2020-03-26 01:33 被阅读0次

    如题, 刚学习了requests的post方法, 现在用百度翻译开发者平台提供的接口来实践下:

    首先通过 https://fanyi-api.baidu.com/这个链接进入开发者平台, 点击产品服务:

    image.png
    进入注册界面完成开发者的注册: 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有个套接字什么的.
    1. 请求数据格式:


      image.png

      这里 get和 post都可以, 推荐使用post

    2. 使用python requests.post 函数发送数据:


      image.png
    3. 处理接收到的数据(json格式, 详细说明在上篇文章):


      image.png
    4. 运行结果 : image.png
      image.png

    总的就这些步骤, 不是很复杂.

    可能要注意的就是几个python库的使用, 第一个是uuid, 这个库给我们提供了很好的接口去生成salt类型的随机数(当然你直接用random随机数也行, 这个更好): 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))
    
    

    相关文章

      网友评论

          本文标题:python爬虫使用requests库利用百度翻译开发者平台ap

          本文链接:https://www.haomeiwen.com/subject/cczfuhtx.html