XPath (XML Path Language) 是一门在 HTML\XML 文档中查找信息的语言,可用来在 HTML\XML 文档中对元素和属性进行遍历。
每个html的标签我们都称之为节点。(根节点、子节点、同级节点)
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。
表达式 | 描述 |
---|---|
nodename | 选中该元素。 |
/ | 从根节点选取、或者是元素和元素间的过渡。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。跨节点获取标签 |
. | 选取当前节点。 |
.. | 选取当前节点的父节点。 |
@ | 选取属性。 |
text() | 选取文本。 |
通配符 | 描述 |
---|---|
* | 匹配任何元素节点。 |
@* | 匹配任何属性节点。 |
node() | 匹配任何类型的节点。 |
/div/* | 选取 div元素的所有子元素。 |
---|---|
//* | 选取文档中的所有元素。 |
//title[@*] | 选取所有带有属性的 title 元素。 |
要用到parsel模块
import parsel
使用xpath的前提是 具有xpath方法 –> Selector对象
提取到的数据返回一个列表
转换数据类型方法
data = parsel.Selector(html_str).extract() # parsel能够把缺失的html标签补充完成
data = parsel.Selector(html_str) # parsel能够把缺失的html标签补充完成
<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>
result = data.xpath('/html/body/div/ul/li/a').extract()
print(result)
result = data.xpath('//a').extract()
print(result)
result = data.xpath('//ul')
result2 = result.xpath('./li').extract()
result3 = result.xpath('./li/a').extract()
print(result3)
result = data.xpath('//a')
result4 = result.xpath('../@class').extract()
print(result4)
result = data.xpath('//li[3]').extract()
result = data.xpath('//li')[2].extract()
print(result)
result = data.xpath('//a[@href="link4.html"]').extract()
print(result)
result = data.xpath('//a[@href="link4.html"]/text()').extract()
print(result)
result = data.xpath('//li[5]/a/@href').extract()
print(result)
可以将上面的代码复制到本地 print一下
或者直接使用谷歌浏览器插件 xpath helper
下载方式:
本地下载安装方法可以百度,很简单的–>传送门