当前位置:网站首页 > 更多 > 编程开发 > 正文

[Python] Python爬虫:Xpath语法笔记

作者:CC下载站 日期:2020-02-24 00:00:00 浏览:66 分类:编程开发

一、选取节点
常用的路径表达式:

表达式描述实例
nodename选取nodename节点的所有子节点
xpath(‘//div’)
选取了div节点的所有子节点/从根节点选取xpath(‘/div’)从根节点上选取div节点//选取所有的当前节点,不考虑他们的位置
xpath(‘//div’)选取所有的div节点.选取当前节点xpath(‘./div’)
选取当前节点下的div节点..选取当前节点的父节点
xpath(‘..’)回到上一个节点@选取属性
xpath([email protected])
选取所有的class属性

二、谓语

谓语被嵌在方括号内,用来查找某个特定的节点或包含某个制定的值的节点

实例:

表达式结果xpath(‘/body/div[1]’)
选取body下的第一个div节点xpath(‘/body/div[last()]’)
选取body下最后一个div节点xpath(‘/body/div[last()-1]’)选取body下倒数第二个div节点xpath(‘/body/div[positon()<3]’)选取body下前两个div节点xpath(‘/body/div[@class]’)选取body下带有class属性的div节点xpath(‘/body/div[@class=”main”]’)选取body下class属性为main的div节点xpath(‘/body/div[price>35.00]’)选取body下price元素值大于35的div节点

三、通配符

Xpath通过通配符来选取未知的XML元素

表达式结果xpath(’/div/*’)
选取div下的所有子节点xpath(‘/div[@*]’)
选取所有带属性的div节点

四、取多个路径

使用“|”运算符可以选取多个路径

表达式结果xpath(‘//div|//table’)
选取所有的div和table节点

五、Xpath轴

轴可以定义相对于当前节点的节点集

轴名称表达式描述ancestor
xpath(‘./ancestor::*’)选取当前节点的所有先辈节点(父、祖父)ancestor-or-selfxpath(‘./ancestor-or-self::*’)选取当前节点的所有先辈节点以及节点本身attributexpath(‘./attribute::*’)选取当前节点的所有属性childxpath(‘./child::*’)返回当前节点的所有子节点descendantxpath(‘./descendant::*’)返回当前节点的所有后代节点(子节点、孙节点)followingxpath(‘./following::*’)选取文档中当前节点结束标签后的所有节点
following-sibingxpath(‘./following-sibing::*’)选取当前节点之后的兄弟节点parentxpath(‘./parent::*’)选取当前节点的父节点precedingxpath(‘./preceding::*’)选取文档中当前节点开始标签前的所有节点

preceding-siblingxpath(‘./preceding-sibling::*’)选取当前节点之前的兄弟节点selfxpath(‘./self::*’)选取当前节点

六、功能函数

使用功能函数能够更好的进行模糊搜索

函数用法解释starts-withxpath(‘//div[starts-with(@id,”ma”)]‘)选取id值以ma开头的div节点
contains
xpath(‘//div[contains(@id,”ma”)]‘)选取id值包含ma的div节点and
xpath(‘//div[contains(@id,”ma”) and contains(@id,”in”)]‘)选取id值包含ma和in的div节点text()xpath(‘//div[contains(text(),”ma”)]‘)选取节点文本包含ma的div节点


scrapy xpath文档:http://doc.scrapy.org/en/0.14/topics/selectors.html

选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

通配符描述*匹配任何元素节点。@*匹配任何属性节点。node()匹配任何类型的节点。

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式结果/bookstore/*选取 bookstore 元素的所有子元素。//*选取文档中的所有元素。//title[@*]选取所有带有属性的 title 元素。



选取若干路径

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

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式结果//book/title | //book/price选取 book 元素的所有 title 和 price 元素。//title | //price选取文档中的所有 title 和 price 元素。/bookstore/book/title | //price选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。


您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯