【BeautifulSoup下】——05全栈开发——如桃花来

目录索引

  • ==CSS选择器:==
    • 实例演示:
      • *1.根据标签名去找,不用加任何修饰,多个条件用空格隔开,一层一层找:*
      • *2.class类名前加. :*
      • *3. 多个逐级条件之间用空格隔开:*

除了标签名选择器之外,还有一种选择器也特别好用。推荐对前端选择器比较熟悉的人使用。

CSS选择器:

介绍:

  1. 类别选择器——class
  2. 标签选择器——标签名
  3. ID选择器——id

语法:

  1. 用css选择器时,标签名不用加任何修饰,class类名前加.号(点号),id名前加#号
  2. 用到的方法是实例化对象名.select() ,返回的类型是list
  3. 多个过滤条件需要用空格隔开,严格遵守从前往后逐层筛选
  4. 同级别条件不需要用空格隔开,跨下一级别的条件中间加空格
  5. select方法会以列表的形式返回所有符合条件的标签

实例演示:

#举个例子:
from bs4 import BeautifulSoup
html='''
q321312321

Hello

  • Foo
  • Bar
  • Jay
  • Foo
  • Bar
'''
soup = BeautifulSoup(html,"lxml")

接下来的代码都带有上面这一块代码,下面展示具体的实例:

1.根据标签名去找,不用加任何修饰,多个条件用空格隔开,一层一层找:

print(soup.select("ul li"))

【BeautifulSoup下】——05全栈开发——如桃花来_第1张图片

返回的是所有ul标签下的li标签

2.class类名前加. :

print(soup.select(".panel-heading"))

【BeautifulSoup下】——05全栈开发——如桃花来_第2张图片

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])#返回的是一个列表,所以可以通过下标取出

【BeautifulSoup下】——05全栈开发——如桃花来_第3张图片
属性联动:

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属性值,返回的依旧是个列表

【BeautifulSoup下】——05全栈开发——如桃花来_第4张图片

注意: 对于取属性来说,一般只有取类名的时候返回的才是一个列表,其他如id之类的属性是直接返回结果

你可能感兴趣的:(beautifulsoup,python,开发语言)