5.xpath解析

Posted Mrs.King_UP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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选取当前节点的所有子元素

以上是关于5.xpath解析的主要内容,如果未能解决你的问题,请参考以下文章

5.xpath解析

5.xpath解析

5.xpath解析

JQuery-选择器

为啥添加范围解析参数后代码可以工作?

jQuery向父辈遍历的方法