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

Python parsel库学习总结

parsel库是Python中用于解析HTML文件的库,其能通过CSS选择器、xpath、正则表达式来定位html中的元素。

通过css选择器定位元素

from parsel import Selector

html = """
<html>
    <head>
      <a class="option1">这是一个伪html片段1</a>
      <a class="option1">这是一个伪html片段2</a>
      <a class="option2" name="name2" id="a3">
          <li class="option1" id="list1">张三</li>
          <li class="option1" id="list2">李四</li>
          <li class="option2" id="list3">王五</li>
      </a>
      <div class="option2" name="name2" id="a4">
          <li class="option1" id="list1">赵六</li>
          <li class="option1" id="list2">钱七</li>
          <li class="option2" id="list3">孙八</li>
      </div>
    </head>
</html>
"""
# 这里返回的是一个Selctor对象
selector = Selector(text=html)

"""
定位元素
"""
# 通过CSS选择器使用类定位a元素。
# 这里返回的值仍然是一个Selector对象,因此可以继续套用xpath、正则表达式
css_items = selector.css('.option1')

# 使用xpath表达式定位a元素
xpath_item = selector.xpath('//a[@name="name2"]')

# 对xpath_item继续套用xpath选择器来选择子元素。
# 注意这里必须要在xpath表达式前添加. ,以表示从当前位置查找
wang_wu = xpath_item.xpath('./li[@class="option2"]')

# 如果想要通过css选择器来定位子孙元素,则使用css选择器的子孙节点语法
a_li = selector.css('a li')

"""
获取元素的html的文本
"""
# 通过get方法可获得第1个元素的html文本。如上面的css_items中,满足class="option1"的元素有6个,get方法仅返回第1个
print('get方法获取到的内容为:',css_items.get())

# 如果想要获取全部元素的html,则需要使用getall方法
print('getall方法获取到的内容为:',css_items.getall())

"""
获取元素的属性值
"""
# 获取使用css选择器定位到的元素的属性值的方法是加上::attr(属性值)来获取
id3 = selector.css('#a3::attr(name)').get()
print("id为a3的元素的name属性值为:",id3)

# 获取使用xpath表达式定位到的元素的属性值的方法是加上/@属性值
li2 = selector.xpath('//div/li[2]/@class').get()
print('div的第二个li子元素的class属性值为:',li2)

打印内容如下:
在这里插入图片描述


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

相关文章:

  • 十,[极客大挑战 2019]Secret File1
  • jmeter 压测常用静默参数解释应用
  • 第六届金盾信安杯Web题解
  • 【小白学机器学习41】如何从正态分布的总体中去抽样?比较不同的取样方差的差别
  • 1.1 STM32_GPIO_基本知识
  • 基于Java Springboot个人财务APP且微信小程序
  • 使用 OpenCV 进行车辆跟踪
  • 深入理解CSS语法:掌握Web开发的基石
  • docker x86环境构建arm镜像出现failed to fetch oauth token问题
  • 爬虫专栏第二篇:Requests 库实战:从基础 GET 到 POST 登录全攻略
  • 【maven-6】Maven 生命周期相关命令演示
  • XELA - uSkin 三轴触觉传感器:为机器人赋予敏锐触感
  • 永磁同步电机负载估计算法--滑模扰动观测器
  • 【合作原创】使用Termux搭建可以使用的生产力环境(一)
  • golang用errgroup的一个小小坑
  • UIlicious - 自动化端到端测试
  • Oracle 建表的存储过程
  • YOLOv11改进,YOLOv11添加SAConv可切换空洞卷积,二次创新C3k2结构
  • Dockerfile 安装echarts插件给java提供服务
  • animate.css和wow.js结合使用实现动画效果
  • 【Windows 11专业版】使用问题集合
  • .net —— Razor
  • 自签发证书配置 HTTPS 单向双向验证
  • 第三方Cookie的消亡与Google服务器端标记的崛起
  • 详解HTML5语言
  • 鸿蒙Next网络请求和解析