通过建议列表爬取
请求分析
打开浏览器开发者工具。随便输入一些文本(这里输入的是”test”)。
会抓取到如下请求:
根据请求的名称可以猜出来:这是获取建议列表的请求。
可以看到,这是一个post请求,参数很简单,只有一个kw参数。
代码编写
那么,代码就很好写了:
1 | import requests,json |
缺点
某些时候并不会显示建议列表(列表为空),此时就无法通过此方式爬取翻译结果。
根据翻译结果请求爬取
除此之外,我们还能找到一个请求,这个应该才是真正的翻译结果:
请求分析
请求参数如下:
请求链接为https://fanyi.baidu.com/v2transapi?from=en&to=zh ,请求方式为POST。
token获取
先从网页源代码入手,我们发现token居然就写在网页源代码里,且与刚才请求中的值一致。
那么,token就轻松解决了。
sign获取
sign是请求的关键参数,类似Google翻译的tk参数。
源代码全局搜索sign,下个断点,找到sign的计算算法。
稍作整理,如下(这里定义的i为一个定值,无需修改):
1 | var i="320305.131321201"; |
代码编写
使用execjs库,编写python代码如下(经测试,这里的cookie是一定需要的):
1 | import execjs,requests,json |
cookie直接复制,如下图:
语言代码请参考网页源代码中的langList
:
1 | langList: { |
至此,就完成了百度翻译结果的爬取。