爬虫常用解析类库——bs4

本文主讲:bs4解析数据库的简答使用!

使用 bs4 库需要什么环境

环境:

bs4库:

1
pip3 install bs4

lxml解释器:

1
pip3 install lxml

bs4 库匹配数据的具体步骤

第一步:从 bs4 库内导入 BeautifulSoup 类

1
from bs4 import BeautifulSoup

第二步:获取网页源代码文本数据

1
html_data = requests.get(url = url,headers = headers).text

第三步:创建美味汤对象【soup】

参数:

html_data:网页源代码文本数据
lxml:解释器,它是固定不变的

1
soup_obj = BeautifulSoup(html_data,"lxml")

第四步:利用美味汤对象的属性以及方法匹配自己想要的数据

下面代码是利用美味汤对象的css选择器方法匹配 html 标签内容

1
dd_tag_list = soup_obj.select(".board-wrapper>dd")

总体截图

image-20211006184753558

bs4 库匹配标签的方法

标签匹配:美味汤对象 . html标签名
示例:soup . div
解释:匹配 html 源代码中第一个 div 标签
注意:这样匹配的是整个标签,即数据加上标签符号, 例如

啦啦啦

标签属性匹配:
美味汤对象.find(html标签名,标签属性名 = 标签属性值)
示例:soup.find(“div”,class_ = “str”)
代码解释:查找 class 属性为 str 的 div 标签

注意
1:为什么 class 后面要加上下划线 _ , 因为 class 是关键字
2:这样匹配的数据也是整个标签

美味汤对象.find_all(html标签名,标签属性名 = 标签属性值)
示例:soup.find_all(“div”,class_ = “str”)
代码解释:查找所有 class 属性为 str 的 div 标签,并且将所有匹配的标签放在一个列表内

css选择器匹配【标签、类、id、层级匹配】:

标签选择器匹配:美味汤对象.select(“div”)
代码解释:匹配所有的div标签

类选择器匹配:美味汤对象.select(“.title”)
代码解释:匹配 class 属性为 title 的标签,并将标签存放至列表内!.符号 代表类选择器
注意:选择器匹配数据标签后都将标签存放至列表内

id选择器匹配:美味汤对象.select(“#title”)
代码解释:匹配 id 属性为 title 的标签,并将标签存放至列表内!#符号 代表 id 选择器

大于号层级选择器:美味汤对象.select(“.title > li > lv”)
代码解释:匹配 class 属性为 title 的标签里面所有的的 li 标签内的所有 lv 标签,并将标签存放至列表内!> 符号表示lv标签在li标签内!也就是子标签

空格号层级选择器:美味汤对象.select(“.title lv”)
代码解释:匹配 class 属性为 title 的标签里面的所有 lv 标签【多级匹配】,并将标签存放至列表内!空格符号表示lv标签不是class属性为title的标签的直系标签,可能是孙标签或者重孙标签

bs4 库匹配标签内数据的方法

image-20211006185005680

持续更新中…….