
Requests库分享系列:
Requests库(一)
Requests库(二)
Requests库(三)如何获取接口传参参数
Requests库(四)如何传递不一样的参数
Requests库(五)接口返回状态码
Requests库(六)接口返回响应头和请求Cookies
Requests库(七)重定向和超时
Requests(八)代理和会话对象
Requests库(九)准备的请求和SSL 证书验证
Requests库(十)接口请求认证
Requests库(十一)实战请求钉钉群机器人
Requests库(十二)实战获取今日头条24小时热文
Requests库(十三)利用钉钉机器人打造一个钉钉群定时推送今日头条24小时热闻
Requests库(十四)一文揭秘如何获取快手关注的视频
之前,我们都是分享的是解析json格式的请求,但是呢,今天给大家看下如何解析json格式呢。我们先看下url。
https://www.cnblogs.com/我们去打开的是博客园首页,我们想要获取的是48小时阅读排行,

那么我们应该怎么直接获取呢,其实按照套路F12,查看请求呗。


发现了排行榜,但是出乎我们的预料,他不是一个标准的json ,我们应该怎么处理呢。官方有xml解析器,或者用beautifulsoup4。那么我们用beautifulsoup4来解析下。安装包
pip install beautifulsoup4接下来我们就是请求解析即可,
import requests
from bs4 import BeautifulSoup
url="https://www.cnblogs.com/aggsite/SideRight"
resonese=(requests.get(url))
if resonese.status_code==200:
reslut=resonese.content.decode("utf-8")
s=BeautifulSoup(reslut,'html.parser')
print(s.find(class_='card-title'))
我们看下找到的是否是对应的。

我们的class是怎么来的呢,是从返回的请求来的。

那么我们怎么获取内容呢。
我们要想获取里面的链接和对应的文字如何获取呢
find_reslut=(s.find(class_='card-title'))
print(find_reslut.a.get("href"))
print(find_reslut.text)
如何获取下面排行榜中的链接呢,我们可以这么做。
import requests
from bs4 import BeautifulSoup
url="https://www.cnblogs.com/aggsite/SideRight"
resonese=(requests.get(url))
if resonese.status_code==200:
reslut=resonese.content.decode("utf-8")
s=BeautifulSoup(reslut,'html.parser')
find_reslut=(s.find(class_='card-title'))
print(find_reslut.a.get("href"))
print(find_reslut.text)
new_reslut = (s.find(class_='item-list').find_all('li'))
for j in new_reslut:
print(j.a.get('href'))
print(j.a.text)这样我们打印出来结果

这里面其实还有一个问题,我们默认的取到的第一个classname为card-title 是48小时的,但是同一个classname还有另外一个,我们这里可能还是加一层处理,就是默认的我们去找到所有在去匹配48小时阅读榜,最后再去找对应的。其实不难。这里面可能会遇到编码问题,记得处理下编码即可。这里关于beautifulsoup4的使用,可以去参考官方文档即可。
如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~