目录
# 1. Xpath & lxml 简介
# 2. lxml
## 2.1 导入
## 2.2 生成树状结构 - etree
## 2.3 树状结构解析 - .xpath('html文件所需值所在的路径')
# 3. Xpath
## 3.1 源代码
## 3.2 用到的 html 文件
---?
# 1. Xpath & lxml 简介
????????XPath,全称XML Path Language,即XML路径语言; ? ? ? ? lxml,支持HTML和XML的解析,支持XPath解析方式.
# 2. lxml
## 2.1 导入
from lxml import etree
## 2.2 生成树状结构 - etree
? ? ? ? 对于网页文件,用etree.HTML(res),其中res是你requests.get(url).text; ? ? ? ? 对于本地 html 文件,用etree.parse(./xxx.html) 即可;
? ? ? ? i.e. 两种方法的参数只要确保为.html格式即可
## 2.3 树状结构解析 - .xpath('html文件所需值所在的路径')
# 3. Xpath
## 3.1 源代码
? ? ? ? 一般返回三种类型:节点,属性@,文本text()
from lxml import etree
tree = etree.parse('./xpath.html')
res = tree.xpath('//*')
res = tree.xpath('//ul/li')
res = tree.xpath('//ol/../@class')
res = tree.xpath('//li[6]/a/text()')
res = tree.xpath('//ul/li[last()]/a/text()')
res = tree.xpath('//li[position()<3]//text()')
res = tree.xpath('//ul/li[last()-2]//text()')
res = tree.xpath('//ul//@href')
res = tree.xpath('//ul/li[5]/a/@href')
res = tree.xpath('//li[@class="balucy"]')
"""[<Element li at 0xc280f68>]_element类型"""
res = tree.xpath('//li[contains(@class, "li")]/a/text()')
res = tree.xpath('//li[@class = "li" and @name = "item"]/a/text()')
res = tree.xpath('//li[@class="balucy"]/text()')
res = tree.xpath('//ol/li/text()')
res = tree.xpath('//ol//text()')
res = tree.xpath('//ul/li[last()-2]//text()')
print(res)
## 3.2 用到的 html 文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>xpath测试</title>
</head>
<body>
<div class="song">
火药
<b>指南针</b>
<b>印刷术</b>
造纸术
</div>
<div class="tang">
<ul>
<li class="balove">停车坐爱枫林晚,霜叶红于二月花。</li>
<li id="hua">商女不知亡国恨,隔江犹唱后庭花。</li>
<li class="love" name="yang">一骑红尘妃子笑,无人知是荔枝来。</li>
<li id="bei">葡萄美酒夜光杯,欲饮琵琶马上催。</li>
<li><a href="http://www.baidu.com/">百度一下</a> </li>
<li class="item-0"><a href="link1.html">the 6th item</a></li>
</ul>
<ol>
<li class="li li-first"><a href="link.html">first item</a></li>
<li class="li" name="item"><a href="link.html">first item</a></li>
<li class="balucy">寻寻觅觅冷冷清清,凄凄惨惨戚戚。</li>
<li class="lily">咋暖还寒时候,最难将息。</li>
<li class="lilei">三杯两盏淡酒。</li>
<li>怎敌他晚来风急。</li>
<li>雁过也,正伤心,却是旧时相识。</li>
<li>爱情三十六计</li>
<li>什么是爱情</li>
</ol>
</div>
</body>
</html>
|