学习xpath看这一篇就够了

前言

偶然看见pythonscrapy框架,由于兴趣的吸引,最近如入门式的学习,在学习过程中遇到了xpath的相关知识,在此进行总结方面日后查询和记忆。
参考:
菜鸟教程

理解

XPath是一门在 XML 文档中查找信息的语言。当然也可以运用于HTML。在scrapy中用来查找页面需要的内容。

实例

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>
<h1>Example</h1>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore> 

选取节点

  • 节点名:选取此节点的所有子节点
  • /:从根节点选取
  • //:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(理解)
  • .:选取当前节点
  • ..:选取当前节点的父节点
  • @:选取属性

注:这些语法可以混合使用。

表达式说明
article选取所有article元素的所有子节点
/article选取根元素article
article/a选取所有属于article的子元素的a元素(不考虑位置)
/div选取所有div元素
article//div选取所有article元素的后代div元素
//@class选取所有名为class的属性

选取多个class

    <div class = "h-entry toc-sidebar">...</div>

要注意的是匹配这样的div通过xpath('//div[@class="h-entry"]')xpath('//div[@class="toc-sidebar"]')是无法获取的,可通过xpath('//div[contains(@class,"h-entry")]')xpath('//div[contains(@class,"toc-sidebar")]')进行匹配到,最好的是xpath('//div[contains(@class,"h-entry") and contains(@class,"toc-sidebar")]')

谓语

谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中。

  • [number]:匹配的第number个节点。
  • [last-number]:当number0时选取最后一个,其他倒数匹配。
  • [position()<number]:选取匹配的前number-1个元素。
  • [@lang]:选取所有拥有名为lang 的属性的节点。
  • [@lang='eng']: 元素拥有值为 englang 属性。

通配符

  • * :匹配任何元素节点。
  • @* :匹配任何属性节点。
  • node() :匹配任何类型的节点。

选取若干路径

通过在路径表达式中使用|运算符,您可以选取若干个路径。

结尾

当然关于xpath并不仅仅于此,对于目前的基础学习,选择内容仅了解如此。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值