爬虫(5) - 网页数据解析(1) | XPath在爬虫中的应用
作者:互联网
什么是XPath
- XPath即为XML路径语言(XML Path Language)
- XPath可以用于定位XML文本的节点
- 实际上,XPath也适用于定位HTML中的节点
节点及节点间的关系
- 在HTML中,节点就是一个个HTML标签
- 分析节点间的关系也就是要清楚HTML文档中各标签间的关系
- 理清这些关系对于书写XPath路径表达式来说非常重要
节点分类
- 先辈节点
- 父节点
- 兄弟节点
- 子节点
- 兄弟节点
XPath路径表达式
XPath使用路径表达式来选取XML文档(或是HTML文档)中的节点或节点集;在节点后加上带有数字的方括号,可以根据兄弟节点在文档中出现的先后次序选择元素(数字1为第一个以此类推)
通过在节点后加上带有属性名-值对的方括号,可以筛选出需要的节点
属性值的写法为:@属性名=“属性值”
路径表达式 | 描述 |
/div /span |
从根节点开始选取div节点 从根节点开始选取span节点 |
//a | 选取文档中所有a节点而不考虑其位置 |
@class | 选取名为class的属性 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
/div/a | 从根节点开始选取div节点下的a节点 |
/div/a[2]/img | 从根节点开始选取div节点下的第二个a节点下的img节点 |
//div[@class='header-wrapper'] | 选取所有属性class的值为header-wrapper的div节点 |
//* | 选取文档中所有元素 |
//@* | 选取文档中所有带属性的元素 |
/div/p/text() | 选取p节点的文本内容 |
//div[contains(@class,"post")] |
选取带有class属性且包含“post”的所有div节点 取反//div[not(contains(@class,"post"))] |
/div/p[last()-1] | 选取div下倒数第二个p节点 |
/div/p[position()>1] | 选取div下第二个p节点后的所有兄弟节点 |
/div/a|div/p | 选取div下的a节点和div下的p节点 |
标签:XPath,网页,class,爬虫,选取,文档,div,节点 来源: https://www.cnblogs.com/gltou/p/16327688.html