python九行代码搞定百度翻译

笔者最近在做一个前端的翻译功能,用到了百度翻译的api,不过每月都有200万字的翻译限制。所以就开始用python爬虫来尝试爬取一下百度的翻译。    

先进入百度的翻译页面,网址 http://fanyi.baidu.com/translate。然后进入开发者模式(F12),切换成手机模式。因为PC端的web在post提交数据的时候会有2个我们不好获取的参数(其中一个是token),但是手机版的没有这2个参数,所以我们选择手机版进行所需要的数据收集。

随便输入一些东西,然后查询。可以发现开发者工具的network中,extendtrans和basetrans这两个文件都是翻译的,然后楼主测试了一下发现extendtrans是扩展翻译,主要是单词和词语的扩展翻译(如果是一个句子的活,则可能没有返回想要的内容)。而basetrans是基础翻译,句子也是可以翻译的。所以楼主这里就选择了basetrans。然后查看basetrans的headeres。

        request URL:请求的地址

  request method:请求的方式,一般常见的也就Post和Get

  user-agent:用户代理,你会发现pc和手机请求的时候这个里面的值是不一样的。而且如果你不设置的话,里面会有一个python的默认值。这个值可能会影响网站给你返回的数据。

  form data:就是我们提交的表单数据了。而参数的zh表示中文,en表示英文。(下面是百度翻译提供的语种)

语言简写 名称
auto 自动检测
zh 中文
en 英语
yue 粤语
wyw 文言文
jp 日语
kor 韩语
fra 法语
spa 西班牙语
th 泰语
ara 阿拉伯语
ru 俄语
pt 葡萄牙语
de 德语
it 意大利语
el 希腊语
nl 荷兰语
pl 波兰语
bul 保加利亚语
est 爱沙尼亚语
dan 丹麦语
fin 芬兰语
cs 捷克语
rom 罗马尼亚语
slo 斯洛文尼亚语
swe 瑞典语
hu 匈牙利语
cht 繁体中文
vie 越南语

 

 

然后进入basetrans的preview里查看百度翻译返回的json数据,可以发现我们需要的翻译在trans->0->dst里面,所以就有了以下的python代码。嗯,一共九行代码,搞定了百度翻译。

import requests
import json
search = input("请输入你要翻译的内容:")
url = "https://fanyi.baidu.com/basetrans"
headers={"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1"}
posData={"query":search,"from":"zh","to":"en"}
response = requests.post(url=url,data=posData,headers=headers)
json_data=json.loads(response.content.decode())
print("输入:{0} 翻译:{1}".format(search,json_data["trans"][0]["dst"]))

 

你可能感兴趣的:(python九行代码搞定百度翻译)