1.xpath介绍
1.1 Xpath基本概念
- Xpath(xml path language)是一种XML的查询语言,能在XML树状结构中寻找节点。xpath用于XML文档,通过查询元素或属性进行导航。
- xml是一种标记语法的文本格式,用于存储和扩展。html是超文本格式。lxml是python的一个包,这个包中包含了将html文本转成xml
对象,和对对象执.xpath的功能
1.2 节点的介绍
<bookstore>
<book>
<title lang='eng'>Harry Potter</title>
<author>J K.Rowing</author>
<year>2005</year>
<price>29<price>
</book>
</bookstore>
<book>文档节点
<author>J K.Rowing</author>元素节点
<lang='eng'>属性节点
父Parent book元素是 title author year price元素的父
字Children 零个一个或者多个,title author year price 都是book元素的子
同胞Sibling 拥有相同父的节点
title author year price 这些元素都是同胞
先辈Ancestor 某节点的父 父的父
title元素的先辈是 book bookstore
2. 基本使用
2.1 工具安装
安装方式参考网站:
https://blog.csdn.net/qq_31082427/article/details/84987723
安装后,打开XPath Helper的快捷键为 ctrl+shift+x
双斜杠//和@的使用案列
单斜杠/的使用案列
选取第N页的页脚元素,用span【N】
选取最前面N个元素属于a元素的子元素的b元素,position()<N
2.2 模块的使用
在Python中,我们安装lxml库来使用XPath 技术。lxml 是一个HTML/XML的解析器,主要的功能是如何解析和提取HTML/XML数据。
==首先导入lxml模块中的etree(from lxml import etree),利用方法etree.HTML(html),将html的字符串转化为Element对象,然后使用etree.tostring将Element对象转化成二进制类型,然后再对所获得的二进制类型用.decode(不用输入utf-8)编码,对其进行补全(把不规则的html的字符串补全,二进制类型转为字符串类型、格式排版优化)
from lxml import etree
wb_data = """
<div>
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a>
</ul>
</div>
"""
Html = etree.HTML(wb_data)
print(Html)
r = etree.tostring(Html)
# 没有进行编码前,打印出的html杂乱无序,
print(r)
# 进行了编码后,打印出的html整齐
r = r.decode()
print(r)
lxml python 官方文档:http://lxml.de/index.html
可用 pip 安装:pip install lxml
lxml 可自动修正 html 代码