爬虫小白入门(四):爬取百度翻译,实现自己的翻译爬虫程序

763 阅读2分钟

哈喽,大家好,我是小爬虫,上一节我们讲了requests库的使用,没有学习过的同学可以关注专栏进行学习。今天我们再次使用requests来实现一个案例:爬取百度翻译。

百度翻译接口分析

首先我们分析一下百度翻译怎么抓取,先在百度翻译页面随意输入一个关键字‘cat’进行翻译,可以看到翻译结果在下面显示了。

接下来我们鼠标右键打开网页源代码,搜索一下网页源代码中是否含有翻译结果。

很明显,源代码中并没有翻译结果。于是我们应该想到,翻译结果并不是存放在html源代码中返回的,而是通过js网络请求返回的。鼠标右键点击检查,进入浏览器调试工具,定位到Network,重新输入关键字‘cat’查看js做了哪些网络请求。通过观察发现其中一个请求就是我们想要找的。

进入Headers查看其request的url和方法发现url是:

https://fanyi.baidu.com/sug

请求方法是POST请求。

再进入Payload页面找到POST请求的data参数,发现是如下格式,其中kw就是对应的key,‘cat’就是我们要搜索的关键字。

{
   kw: 'cat'
}

我们进入Preview下面观察这个请求返回的结果,可以看到返回的是一个json格式的数据,其中我们需要的结果是data,这是一个列表,每一个item里面的k和v就是单词对应的翻译结果,这正是我们需要的。

实现百度翻译的爬取

经过以上分析,我们找到了我们应该请求的url,请求的方法是POST,还有POST请求应该携带的data参数的格式,以及请求返回的数据格式。接下来我们就利用我们上一节所讲到的requests发送POST请求的方法来实现,我们很容易写出如下代码

import requests

url = "https://fanyi.baidu.com/sug"
data = {
    "kw": "cat"
}

resp = requests.post(url, data=data)
data_list = resp.json()['data']
for item in data_list:
    print(f"{item['k']}: {item['v']}")

运行观察打印的结果,可以看到打印出来了我们需要的翻译内容。

当然我们可以把POST请求data里面需要翻译的kw,换成如下的写法,这样就可以实现我们输入一个任意关键字,都可以返回我们需要的结果,这样就实现了一个交互式的翻译爬虫。

data = {
    "kw": input("请输入需要翻译的关键字:")
}

本节的实践就到这里,接下来我们将会写一个爬虫来爬取豆瓣的页面,敬请期待。记得关注小爬哦~

本文首发于公众号:小爬虫,欢迎关注
在这里插入图片描述