XPath相关用法总结

XPath是一种用于在XML和HTML文档中查找信息的语言,常用于爬虫中的信息抽取。在Python中,通过LXML库可以方便地使用XPath。本文介绍了XPath的节点类型、路径表达式、谓语、常用函数、运算符及其在实际XML文档中的应用,如选取特定节点、条件筛选等。
摘要由CSDN通过智能技术生成
  • xpath是什么

  xpath是一种xml路径语言,它提供了一种在xml文档中搜索信息的语法和方式,由于它也可以用来对HTML文档进行搜索,因此它在爬虫中用来作为信息抽取是一种不错的选择,而且它的速度还快。

  • 如何使用

  在Python中,使用XPath可以先安装LXML库。可以使用 pip install lxml 快速安装,安装好就可以使用了。使用方法如下:

# 导入etree
from lxml import etree
# 将网页source code转换为被XPath识别和选择的对象
Selector = etree.HTML(source_code)
# 抽取需要的信息
Selector.xpath('')
  • 选取节点

  首先我们需要了解XPath的节点是什么?有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。我们通过W3C中的例子来看看:

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book>
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author> 
  <year>2005</year>
  <price>29.99</price>
</book>

</bookstore>

对于上面的文档,有以下结论
<bookstore> (文档节点)
<author>J K. Rowling</author> (元素节点)
lang="en" (属性节点) 

常用的路径表达式:

表达式 描述 例子
nodename 选取nodename节点的所有子节点 xpath(‘//div’)
/ 从根节点选取 xpath(‘/div’)
// 选取所有的当前节点,不考虑他们的位置 xpath(‘//div’)
. 选取当前节点 xpath(‘./div’)
选取当前节点的父节点 xpath(‘…’)
@ 选取属性 xpath(’//@calss’)
| 选取若干路径 xpath(’//div/title | //div/book)
  • 谓语

  谓语是用来查找某个特定的元素节点或者满足某种条件下的元素节点,谓语的语法被嵌在某个元素的方括号内,方括号中可以指定待选取的节点需要满足的条件。下面给出一些例子:

表达式 结果
/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position() < 3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang=‘eng’] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.00] 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。
  • 常用的函数

1、starts-with():获取以xxx开头的元素
例子:xpath(‘//div[start-with(@class,”test”)]’)
2、ends-with():获取以xxx结尾的元素
例子:xpath(‘//div[end-with(@class,”test”)]’)
3、contains:获取包含xxx的元素
例子:xpath(‘//div[contains(@id,”test”)]’)
4、text()
例子1:xpath(‘//div[contains(text(),”test”)]’)
例子2:xpath(‘//div[@id=”“test]/text()’)
5、last():返回当前节点集中索引为最后一个的节点
例子:/bookstore/book[last()]
6、position():定位当前节点集中的索引
例子:/bookstore/book[position() < 3]

  • 常用的运算符

1、“ | ” :计算两个节点集
2、and:与运算,计算同时满足两个条件
3、or :或运算,计算至少满足一个条件
4、=: 等于
5、!=:不等于

  • 结合使用

  接下俩我们将对上面所讲述的一些只是点,在一个实际的例子中操作,并对它的结果进行演示,我们接下来给出一个xml文档

<!DOCTYPE html>
<html>
<head>
    <title>xpath test</title>
</head>
<body>
<div price="99.8">
    <div>
        <ul>
            <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值