Requests库(十五)一文解决解析text/html格式返回数据

您所在的位置:网站首页 返回的数据类型 Requests库(十五)一文解决解析text/html格式返回数据

Requests库(十五)一文解决解析text/html格式返回数据

2024-01-21 17:10| 来源: 网络整理| 查看: 265

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的使用,可以去参考官方文档即可。

如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3