Python - xpath解析XML、HTML

本文详细介绍了Python中使用xpath解析XML和HTML的方法,包括绝对路径与相对路径的使用,节点、属性的选取,谓语筛选以及通配符的应用,并通过实例展示了如何解析豆瓣电影数据。

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

Python - xpath解析XML、HTML

绝对路径:HTML / body / div / a

相对路径: ./a

专业术语

树:整个HTML或XML结构

节点:HTML中的每个标签,XML中标签就是节点

根节点:树的第一个节点,HTML的根节点就是HTML标签

属性:节点属性(HTML中就是标签属性)

from lxml import etree

xpath解析xml

XML数据格式

json数据与XML数据时两种通用的数据格式,用于不同语言之间进行数据交流

将一个超市的商品数据进行传输:

json:
{
   
    "name":"永辉超市",
    "address":"肖家河",
    "goods":[
    {
   "name":"泡面","price":3.5,"count":50}
    {
   "name":"火腿肠","price":3,"count":200}
    {
   "name":"矿泉水","price":2,"count":30}
    ]
}

XML:
<supermarket>
    <name>永辉超市</name>

    <address>肖家河</address>

    <goodsList>
        <goods name = "泡面" price = "3.5" count = "50"></goods>
        <goods name = "火腿肠" price = "3" count = "200"></goods>
        <goods name = "矿泉水" price = "2" count = "30"></goods>
    </goodsList>
    <workerList>
      <cashier name = "张三" pay = "4000"></cashier>
      <shoppingGuide name = "李四" pay = "3000"></shoppingGuide>
    </workerList>
</supermarket>
  1. 准备数据
xml_data ="""
<supermarket>
    <name>永辉超市</name>
    <address>肖家河</address>
    <goodsList>
        <goods name = "泡面" price = "3.5" count = "50"></goods>
        <goods name = "火腿肠" price = "3" count = "200"></goods>
        <goods name = "矿泉水" price = "2" count = "30"></goods>
    </goodsList>
    <workerList>
        <cashier name = "张三" pay = "4000"></cashier>
        <shoppingGuide name = "李四" pay = "3000"></shoppingGuide>
    </workerList>
</supermarket>
"""
  1. 创建树对象,并且获取数据的根节点
supermarket = etree.XML(xml_data)
  1. 获取标签(获取节点)

    节点对象.xpath(路径)

    a.写绝对路:不管xpath前面的节点对象是什么,路径从根节点开始写

    写法:/绝对路径

cashier = supermarket.xpath('/supermarket/workerList/cashier')

​ b.相对路径:用.表示当前节点,xpath前面是谁,当前节点就是谁

​ …表示当前节点的上层节点

​ 注意:./ 可省略

cashier = supermarket.xpath('./workerList/cashier')
print(cashier)   #[<Element cashier at 0x1d4299ba980>]

cashier = supermarket.xpath('../workerList/cashier')
print(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值