爬虫常用解析类库——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") |
总体截图
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 库匹配标签内数据的方法
持续更新中…….