XPath
什么是XPath?
- xpath(XML Paht Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历。
XPath开发工具
- Chrome插件XPath Helper。
- Fiefox插件Try XPath
XPath节点
- 在XPath中,有7类节点:元素,属性,文本,命名空间,处理指令,注释以及文档(根)节点。XML文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。
XPath语法
表达式 |
描述 |
/ |
从根节点选取。或者是元素和元素间的过度 |
// |
从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 |
. |
选取当前节点 |
. . |
选取当前节点的父节点 |
@ |
选取属性 |
text() |
选取文本 |
表达式 |
结果 |
bookstore |
选择bookstore元素 |
/bookstore |
选取根元素bookstore。注释:假如路径起始于正斜杠(/),则此路径始终代表到某元素的绝对路径 |
bookstore/book |
选取所有book子元素,而不管它们位于bookstore之下的什么位置 |
//book/title/@lang |
选择所有的book下面的title中的lang属性的值 |
//book/title/text() |
选择所有的book下面的title文本 |
/bookstore/* |
选取bookstore元素的所有子元素 |
//* |
选取文档中所有的元素 |
//title[@*] |
选取所有带属性的title元素 |
通配符 |
描述 |
* |
匹配任何元素节点 |
@* |
匹配任何属性节点 |
node() |
匹配任何类型的节点 |
案例
html_str = """
<div>
<ul>
<li class="item-1">
<a href="link1.html">第一个</a>
</li>
<li class="item-2">
<a href="link2.html">第二个</a>
</li>
<li class="item-3">
<a href="link3.html">第三个</a>
</li>
<li class="item-4">
<a href="link4.html">第四个</a>
</li>
<li class="item-5">
<a href="link5.html">第五个</a>
</li>
</ul>
</div>
"""
import parsel
data = parsel.Selector(html_str)