目录索引
- ==CSS选择器:==
实例演示:
- *1.根据标签名去找,不用加任何修饰,多个条件用空格隔开,一层一层找:*
- *2.class类名前加. :*
- *3. 多个逐级条件之间用空格隔开:*
除了标签名选择器之外,还有一种选择器也特别好用。推荐对前端选择器比较熟悉的人使用。
CSS选择器:
介绍:
- 类别选择器——class
- 标签选择器——标签名
- ID选择器——id
语法:
- 用css选择器时,标签名不用加任何修饰,class类名前加.号(点号),id名前加#号
- 用到的方法是
实例化对象名.select()
,返回的类型是list- 多个过滤条件需要用空格隔开,严格遵守从前往后逐层筛选
- 同级别条件不需要用空格隔开,跨下一级别的条件中间加空格
- select方法会以列表的形式返回所有符合条件的标签
实例演示:
#举个例子:
from bs4 import BeautifulSoup
html='''
<div class="pan">q321312321</div>
<div class="panel">
<div class="panel-heading">
<h4>Hello</h4>
</div>
<div class="panel-body">
<ul class="list" id="list-1">
<li class="element">Foo</li>
<li class="element">Bar</li>
<li class="element">Jay</li>
</ul>
<ul class="list list-small" id="list-2">
<li class="element">Foo</li>
<li class="element">Bar</li>
</ul>
</div>
</div>
'''
soup = BeautifulSoup(html,"lxml")
接下来的代码都带有上面这一块代码,下面展示具体的实例:
1.根据标签名去找,不用加任何修饰,多个条件用空格隔开,一层一层找:
print(soup.select("ul li"))
返回的是所有ul标签下的li标签
2.class类名前加. :
print(soup.select(".panel-heading"))
3. 多个逐级条件之间用空格隔开:
print(soup.select("ul.list"))#不唯一的时候可以考虑使用id
print("-"*50)
print(soup.select("ul.list.list-small"))#因为都在同一级别,都在第二个ul标签内部,所以不能加空格
print("-"*50)
print(soup.select("ul .element"))
print("-"*50)
print(soup.select("ul.list#list-1 li")[2])#返回的是一个列表,所以可以通过下标取出
属性联动:
print(soup.select("ul li")[0].string)#.string是不可以跨级别取数据的,另外他只能取出符合条件的第一个数据,所以必须加下标
print("-"*50)
print(soup.select("ul.list#list-1 li")[2].string)#返回的是文本
print("-"*50)
print(soup.select("ul.list#list-1 li")[2].attrs["class"])#.attrs可以省略不写,这一步是获取ul下第三个li标签的class属性值,返回的依旧是个列表
注意: 对于取属性来说,一般只有取类名的时候返回的才是一个列表,其他如id之类的属性是直接返回结果