十行代码写翻译程序
过程大概是 对百度翻译进行爬虫,将需要翻译的文本,传入对百度翻译url的请求头中,然后分析对返回的数据进行解析,即可
首先我们打开百度翻译的页面,打开network,选择XHR,如下图
当我们在翻译的地方输入内容时,下方会加载出数据包,这里就随便输入一个apple吧
如果是一个一个字母输入,下方会找到字母数量的sug,也就是几个字母出现几个sug
如果我们直接粘贴这个单词,则只会出现一个sug,原因很简单,就是翻译会实时监测文本框的内容,有变化就会返回一个sug,所以这也是为什么要找这个数据包的原因
它可以理解为,翻译好之后返回的数据
点击进去,在右侧查看
主要看两个地方,url和最下面的Form Data 里面有一个kw:apple 就是传入的参数
点击到Reaponse查看相应数据,有一串JSON格式的数据包,其实这个v后面就是翻译好的内容,只不过因为编码的原因没有显示出中文
我们在网页上找到在线中文汉字/ASCII码/Unicode编码互相转换工具
对v后面的字符进行转换即可看到对应的中文信息
在代码中不需要转换,直接对字典格式的数据包进行键值对提取即可
梳理一下思路,我们将https://fanyi.baidu.com/sug作为爬虫的URL,请求头中传入UA伪装,data中传入需要翻译的参数,对返回的数据包进行解析即可
整个代码如下,总共也就12行
import requests
word = input('请输入需要翻译的文字:')
post_url = 'https://fanyi.baidu.com/sug'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
data = {
'kw':word
}
response = requests.post(url=post_url,headers=headers,data=data)
response.encoding = 'utf-8'
print(response.json()['data'][0]['v'])
QQ录屏20210703131554