解析工具 :xpath

使用xpath

Xpath,全称是XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言。它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。因此xpath常在爬虫中被用到。

XPath规则

在这里插入图片描述

例如:

html选取html的所有子节点
/html选取根元素html(绝对路径)
//div选取所有div节点
//div/a选取所有div节点下的a节点
./p选取当前节点下的p节点
…/p选取父节点下的p节点
.//div选取当前节点下的所有div节点
./a/@href选取当前节点下的a节点的href属性

XPath常用语法

1. 通过属性选取节点:
//*[@id=“test”]选取所有id为test的节点
//div[@class=“test”]选取所有class为test的div节点
//div[@name=“city” and @id=“t”]选取所有name为city并且id为t的div节点
//div[@name=“city” or @id=“t”]选取所有name为city或者id为t的div节点
2.【contains】属性包含多个值的选取:

: 如<div class="t1 t2 t3"><p>123</p></div>

//div[contains(@class,“t1”)]选取所有class包含t1的div节点
//div[contains(@class,“t1”) and contains(@class,“t2”)]选取所有class包含t1和t2的div节点
3.用【start-with】,定位节点:
//a[starts-with(@rel, “nofo”)]选取所有rel属性以nofo开头的a元素
4.用【last】,定位节点:
//div[@id=“t1”]/a[last()]选取id为t1的div节点下的最后一个a节点
5.用【text】,定位节点:
//p[text()=“cont”]选取所有text文本内容为cont的p节点
//div[contains(text(), “cont2”)]选取所有text文本内容包含cont2的div节点
6.选取节点下的文本内容【text】:

: 如<div class="t1 t2 t3"><p>123</p><p>456</p>789</div>

//div/text()选取所有div下的文本(一级文本)—— 789
//div/p[1]/text()选取所有div下的第一个p节点下的文本(一级文本)—— 123
//div//text()选取所有div下的所有文本([123,456,789])
7.选取多个路径:
//div/p|//tr/em选取所有div下的p节点和所有tr下的em节点
//div|//tr/em选取所有div节点和所有tr下的em节点
8.选取第几个节点(xpath中从1开始):

: 如<div class="t1 t2 t3"><p>123</p><p>456</p></div>

//div/p[1]选取所有div下的第一个p节点
//div/p[2]选取所有div下的第二个p节点
9.定位兄弟节点:

在这里插入图片描述

//a[@id=“3”]/following-sibling::a[1]获取第三个a标签的下一个a标签
//a[@id=“3”]/following-sibling:: *[N]获取第三个a标签后面的第N个标签
//a[@id=“3”]/preceding-sibling::a[1]获取第三个a标签的上一个a标签
//a[@id=“3”]/preceding-sibling:: *[N]获取第三个a标签的前面的第N个标签
//a[@id=“3”]/. .获取第三个a标签的父标签

新手司机上线ing…
如有写的不对的地方,还望指出来!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值