当前位置: 首页 > article >正文

【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='''
<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之类的属性是直接返回结果


http://www.kler.cn/a/17319.html

相关文章:

  • JVM 中的完整 GC 流程
  • Elasticsearch 8.16:适用于生产的混合对话搜索和创新的向量数据量化,其性能优于乘积量化 (PQ)
  • 贪心算法day03(最长递增序列问题)
  • 【HarmonyOS NEXT】一次开发多端部署(以轮播图、Tab栏、列表为例,配合栅格布局与媒体查询,进行 UI 的一多开发)
  • 假期增设:福祉与负担并存,寻求生活经济平衡之道
  • NVIDIA Isaac Sim 仿真平台体验测评
  • LeetCode:21. 合并两个有序链表
  • 1992-2022年31省GDP、第一产业增加值、第二产业增加值 第三产业增加值
  • 【51单片机】DS1302时钟模块
  • Office转换需要用到的SDK(建议)
  • 黑马点评项目导入
  • 操作系统内存管理笔记
  • nginx中使用absolute_redirect解决代理重定向问题
  • 【MySQL】数据库基础操作一:建库与建表
  • P4725 【模板】多项式对数函数(多项式 ln)
  • MobileNet(V1、V2、V3)入门
  • 状态机模式
  • 男子订民宿被毁约5个家庭漂泊街头 房东:住满了,没办法
  • Maven 知识点总结
  • 日撸 Java 三百行day38
  • Springboot +Flowable,任务认领和回退(一)
  • 【JavaEE】应用层自定义协议及UDP协议
  • 【技术选型】Elasticsearch 和Solr那个香?
  • shell脚本 cut工具
  • 智能交通:从车牌识别到城市智能停车
  • Linux 中实现 ssh 免密登录