有道翻译接口问题(续)

原博文地址:https://blog.csdn.net/qq_40962368/article/details/80620817

自从写了上面的博文之后,很多人询问我关于有道翻译接口的问题,为什么不是F12中的

http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule

当时,我在面对这个问题时,也是一脸懵逼,进行过很多次猜测,一直没有得出让自己比较满意的理由。

最近我用requests库重写了有道翻译内容的爬虫,依然不能解决这个问题。

偶然的一次更改,将路径中的_o去掉,便可以正确的返回结果,即路径设为

http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule

为此,我上网查了很多资料依然没有结果。。。但是从_o的字面意思来看,让我想到了锁。

个人分析:

从返回的结果来看,如果加上_o,就像网站给翻译结果加了一道锁,让我们无法访问翻译返回的结果。 

但是,如果去掉_o,就可以正确的返回结果,就像直接绕过了锁,直接返回翻译结果。

 对于这个问题,我会持续跟进,如果有什么想法,我会第一时间分享给大家。

再次更新,博文地址https://blog.csdn.net/qq_40962368/article/details/89097488

 上代码:

import requests
import chardet
import json

if __name__ == '__main__':

    url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    i = input('请输入要翻译的内容:')
    data = {
        'i': i,
        'from': 'AUTO',
        'to': 'AUTO',
        'doctype': 'json',
        'smartresult': 'dict',
        'client': 'fanyideskweb',
        'version': '2.1',
        'keyfrom': 'fanyi.web',
        'action': 'FY_BY_REALTIME',
        'TypoResult': 'false'
    }

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
        ' AppleWebKit/537.36 (KHTML, like Gecko)'
        ' Chrome/73.0.3683.86 Safari/537.36'
    }

    response = requests.post(url, data=data, headers=headers)
    html = response.content  # 读取返回的对象
    code = chardet.detect(html)  # 自行判断编码格式
    data = html.decode(code.get('encoding', 'utf-8'))  # 解码
    json_data = json.loads(data)  # 解析载入json数据
    print('翻译的结果为:' + json_data['translateResult'][0][0]['tgt'])

 运行结果:

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值