Scrapy与分布式开发(2.3):lxml+xpath基本指令和提取方法详解

lxml+xpath基本指令和提取方法详解

一、XPath简介

XPath,全称为XML Path Language,是一种在XML文档中查找信息的语言。它允许用户通过简单的路径表达式在XML文档中进行导航。XPath不仅适用于XML,还常用于处理HTML文档。

二、基本指令和提取方法

选择节点

使用XPath,你可以轻松地选择XML文档中的节点。
* 选择根节点:/
* 选择子节点:/parent/child
* 选择所有节点://*
* 后代节点选择:使用//descendant选择文档中的任意后代节点,无论层级。
* 相邻节点选择:使用/sibling1/following-sibling::sibling2选择相邻的同级节点。

使用轴

XPath提供了多种轴,允许你基于节点之间的关系进行选择。
* 子轴:/parent/child
* 同胞轴:/parent/child1/following-sibling::child2
* 属性轴:/parent/child/@attribute

使用谓语

谓语用于过滤节点集,帮助你更精确地定位节点。
* 选择第一个节点:/parent/child[1]
* 选择具有特定值的节点:/parent/child[@attribute='value']
* 选择多个满足条件的节点:/parent/child[position() > 1]
* 使用/parent/child/@attribute直接选择属性节点。
* 使用/parent/child[position()]根据节点在父节点下的位置进行选择。例如,[1]表示第一个子节点,[last()]表示最后一个子节点。
* 使用/parent/child[text()='value']选择文本内容等于特定值的节点。
* 使用andor进行多条件选择,如/parent/child[@attribute1='value1' and @attribute2='value2']

提取加粗样式文本

XPath不仅可以定位节点,还可以提取节点的文本内容。
* 使用text()函数提取节点的文本内容,如/parent/child/text()
* 使用string()函数提取节点的字符串表示,适用于复杂节点结构。
* 直接使用/@attribute提取节点的属性值,如/parent/child/@attribute
* 使用逗号,分隔多个XPath表达式,一次性提取多个节点或属性,如/parent/(child1, child2, @attribute)
* 使用.表示当前节点及其所有子节点,如node()函数。

三、实例演示

下面是一些XPath查询的实例,演示了如何使用XPath来提取XML文档中的数据。

XML文档示例

<bookstore>
  <book>
    <title lang="en">Harry Pottertitle>
    <author>J.K. Rowlingauthor>
    <price>29.99price>
  book>
  <book>
    <title lang="en">Learning XML

你可能感兴趣的:(打造高效爬虫系统,scrapy,分布式,xpath,lxml)