Python基础爬虫-爬取百度翻译

爬取百度翻译

这种网站的特点就是在不刷新整个页面,或者不改变网址的情况下,局部刷新网页,通过异步加载方式返回json格式的数据。

一. 分析网址

​ 百度翻译网址:https://fanyi.baidu.com

​ 当我们输入一个单词时,例如“wolf”,可以发现整个网页的地址没有变化,只是局部刷新了。按f12键打开抓包工具,选择Network中的XHR选项后,重新输入可以发现从服务器返回了一些json格式的数据:Python基础爬虫-爬取百度翻译_第1张图片

点击最后一个sug,可以发现我们真正请求的地址以及我们传入的“wolf”参数:

Python基础爬虫-爬取百度翻译_第2张图片

然后就是点击preview,查找我们需要的信息,也就是翻译后的信息。可以发现翻译信息储存在key为“data”,values为一个列表的字典中,该values中的列表里的每一个元素又是一个个字典,Python基础爬虫-爬取百度翻译_第3张图片

所以我们需要爬取的信息的位置表达式为

['data'][0]['v']

二. 编写代码

​ 知道了真正的请求地址和储存信息的位置后,代码写起来也就轻松了;只是我们爬取回来的网页内容的格式是str字符串,需要使用json.loads(content)把它转化为原来的字典格式

完整代码如下:

# -*- coding: utf-8 -*-
# @Author  : Silas9187
# @Email   : [email protected]
# @blogsite  :https://blog.csdn.net/acarsar
# @GitHub    :https://github.com/silas9187
import requests
import json
url = "https://fanyi.baidu.com/sug"
# 定义请求的参数
data = {'kw': 'python'}
# 创建请求, 发送请求, 爬取信息
res = requests.post(url, data=data)
# 解析结果
str_json = res.content.decode("utf-8")
print(type(str_json))
myjson = json.loads(str_json)
print(type(myjson))
print(myjson['data'][0]['v'])

最后觉得对你有帮助的话,点个赞吧。谢谢支持

Python基础爬虫-爬取百度翻译_第4张图片

你可能感兴趣的:(Python入门爬虫)