Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
xpath介绍_xpath基本语法,希望能够帮助你!!!。
目录
- 1:xpath
-
- 1.1:寻找数据的方式
- 1.2:作用
- 1.3:可以解决的问题
- 课外知识
-
- 2:xpath快速入门
-
- 3:使用xpath选取结点
-
- 4:lxml模块的使用
1:xpath
- 是数据解析的一种方式,是一种可以根据地址来寻找数据的技术
- re + requests 已经可以写出一些简单的爬虫,但是re表达式太麻烦了,所以才有了xpath这种数据解析的方式
- re模块中的re表达式相当于是一个模板了,寻找数据的方法就是根据这个模板来找数据
- xpath,解析数据的方式,就像是知道了数据所在的地址,直接去这个地方去寻找数据就可以了
1.1:寻找数据的方式
- 可以根据树状结构中寻找结点,可以通过元素和属性进行导航
1.2:作用
- 是用来解析网页,解析数据。
- 可以根据不同的网页结构来合理的选择不同的解析数据技术,从本质上来理解,re模块和xpath模块的作用是一样的,都是用来解析数据的
1.3:可以解决的问题
课外知识
- 主要是用来讲述html、xml和lxml数据之间的联系和关系
html
xml
lxml
- 是一个python的第三方的库,可以把html文本(字符型)转换为xml对象(element对象),也就是说在转换为xml语言之后可以使用xpatn语法进行导航了
- 简单的来说lxml就是用来转换xml和html语言之间的一种桥梁
2:xpath快速入门
2.1:基本知识
xml_content = ''' <bookstore> <book> <title lang='eng'>Harry Potter</title> <author>JK.Rowing</author> <year>2005</year> <price>29<price> </book> </bookstore> '''
2.2:解释
- 上面xpath结点例子
- <bookstart>:文档结点,也就是这个标签下的数据
- <author>JK.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元素
3:使用xpath选取结点
使用xpath选取结点
结点 |
描述 |
nodename(结点名称) |
选取此节点下的全部子节点 |
/ |
从根根节点选择,和绝对位置相似 |
// |
从匹配选择的当前结点选择文档中的结点,而不考虑它们的位置,和相对位置相似 |
. |
选择当前结点 |
… |
选择当前结点的父结点 |
/text() |
获取当前路径下面的文本内容,也就是获取当前路径下的以元素结点 |
/@*** |
提取当前路径下标签的属性值 |
\(可选符) |
可选择若干路径,(//p | //div) |
选取xpath结点
公式 |
描述 |
xpath(’/boby/div[1]’) |
选取boby结点下的第一个div结点 |
xpath(’/boby/div[last()]’) |
选取boby结点下的最后一个div结点 |
xpath(’/boby/div[last()-1]’) |
选取boby结点下的倒数第二个结点 |
xpath(’/boby/div[possion<3]’) |
选取boby结点下的前两个div结点 |
xpath(’/boby/div[@class]’) |
选取boby结点下带有class属性的div结点 |
xpath(’/boby/div[@class=“main”]’) |
选取boby结点下c带有lass属性的div属性 |
xpath(’/boby/div[price>35.0]’) |
选取boby结点下price元素大于35的div结点 |
- 注意:
1:要获取属性结点需要添加@符号,属性结点=属性结点
2:要获取文本结点下的属性要在后面添加/text(),文本结点=元素节点
3:在结点的属性经常变动的情况下,使用属性获取结点下的数据就会很麻烦,因为要经常的更改属性值,所以在这种的情况下,使用路径来获取数据就显得跟加的合适
4:lxml模块的使用
- 功能:可以把html文件数据转换为element对象(xml数据),有了element对象时候就可以使用xpath语法对数据进行导航了
- 使用方法
# 导入要使用的库
form lxml import etree # etree:树
# 得到目标网页数据的源码html数据
etree.HTML(网页源码) # 作用:把HTML数据转换为element对象
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。