lxml学习记录

本文介绍了lxml库,一个基于libxml2的Python库,用于高效解析HTML和XML。重点讲解了如何使用HTML方法处理文档,以及XPath语法进行节点选择和属性查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lxml库及xpath学习记录

1、Lxml库简介及作用
2、HTML方法、tostring方法
3、xpath语法


1、Lxml库简介及作用

  • Lxml库是基于libxml2的XML解析库的封装。只用C语言编写,用xpath语法解析定位网页数据

  • 导入方法:from lxml import etree


2、HTML方法、tostring方法


  • lxml库中的HTML方法将文档解析成一个Element对象,它是lxml库中的核心数据结构之一。Element对象表示XML或HTML文档中的一个元素,并以树形结构保存了整个文档的层次关系和内容。
    Element对象具有类似于字典的属性和方法,可以通过标签名、属性等方式访问和操作文档中的元素和数据。


    使用方法如下:


    from lxml import etree

    #从字符串解析HTML

    html_string = “<html><body><h1>Hello, World!</h1></body></html>”

    html_tree = etree.HTML(html_string)
    html_text = etree.tostring(html_tree) #将html_tree再转换成字符串



    HTML方法同时还具有自动修正HTML代码的功能,

    比如将上面的html_string= “<html><body><h1>Hello, World!</h1></body></html>”


    改为 html_string = “<html><body><h1>Hello, World!</h1></body>” 最终得到的结果是一样的,结尾的</html>会被自动补上。



    具体的属性和方法等后面学到或者用到了记得补上。

3、xpath语法


  • 节点选择

    字符意义
    node选择此节点的所有子节点
    /从根节点开始选择
    //从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
    .选取当前节点
    选取当前节点的父节点
    @选取属性
  • 节点选择实例

    字符意义
    user_database选取元素user_database所有子节点,例如div,h2等
    /user_database选取根元素user_database
    user_database/user选取属于user_database的子元素的所有user元素
    //user选取所有user子元素,不管它们在文档的位置
    user_database//user选择属于user_database元素后代所有user元素,不管它们位于user_database下的什么位置
    //@attribute选取名为attribute的所有属性
  • 谓语

    字符意义
    /user_database[1]选取user_database子元素的第一个user元素
    //li[@attribute]选取所有拥有名为attribute属性的li元素
    //li[@attribute = ‘red’]选取所有li元素且这些元素都有值为red的属性
  • 通配符及逻辑运算符选择

    字符意义
    *匹配任意节点
    @*匹配任意属性节点
    and与操作符,同时满足两个条件
    or或操作符,满足任意一个条件
    not非操作符,不满足指定条件的节点

  • 在最后加上/text()可以获取标签内文本信息如:


    id = selector.xpath(‘//*[@id = “qiushi_tag”]/div/a[2]/h2/text()’)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值