5.xpath解析

  1. xpath是XML文档中搜索内容的一门语言,HTML是XML的一个子集

    xpath(XML Path Language),即 XML 路径语言,最初设计是用来搜寻XML文档的,但是它同样适用于 HTML 文档的搜索,通过 Python 的 LXML 库利用 XPath 进行 HTML 的解析,使用路径表达式来选取XML文档中的节点和节点集,节点是通过沿着路径来选取的
    from lxml import etree

  2. 常用规则:
    nodename 选取此节点的所有子节点
    / 从当前节点选取直接子节点
    // 从当前节点选取子孙节点
    . 选取当前节点
    … 选取当前节点的父节点
    @选取属性

    eg:
    //title[@lang=’eng’] 选择所有名称为title,且属性为lang=eng的节点,

  3. <book>
    <id>1</id>
    <name>野花遍地看</name>
    <price>1.23</price>
    <author>
    <nick>周大强</nick>
    <nick>周芷若</nick>
    </author>
    </book>

  4. 语法规则:通过节点间的结构关系找
    /book/price

  5. 安装lxml:pip install lxml -I xxxxx

  6. xpath解析-1:
    from lxml import etree
    tree=etree.XML()

  • tree.xpath(’/book/name/text()’) #text()拿出来其中的文本 ,使用list列表返回,/表示儿子
  • tree.xpath(’/book/author//nick/text()’) # //表示找author节点的后代中为nick的节点,并取其中的值(这个后代包括儿子和孙子)
  • tree.xpath(‘/book/name/*/nick/text()’) # *表示任意节点,通配符
  1. xpath解析-2:
    tree=etree.parse(“a.html”)#加载html文件
  • tree.xpath(‘/html/body/ul/li[1]/a/text()’) #只获取其中的第一个li,xpath从1开始
  • tree.xpath(‘/html/body/ol/li/a[@href=”dapao”]/text()’)# 获取具有属性href且href=”dapao”的a标签的文本
  • list_li=tree.xpath(‘html/body/ol/li’) #获取li的列表
    for li in list_li:
    #从每一个li中提取文字信息
    li.xpath(‘./a/text()’) # 在li中继续寻找,为相对路径,为./的形式
    li.xpath(‘./a/@href’)# 获取a标签的href的属性值
  • tree.xpath(‘/html/body/ul/li/a/@href’) #获取a中该属性的值
  • 从检查中直接复制xpath:首先定位到元素的位置,再通过右键检查,右键有复制xpath
  1. xpath实现猪八戒官网信息爬取

  2. ancestor 选取当前节点的所有父辈
    ancestor-or-self选取当前节点的所有父辈和当前节点
    attribute 选取当前节点的所有属性
    child选取当前节点的所有子元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mrs.King_UP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值