xpath介绍

1:xpath

  • 是数据解析的一种方式,是一种可以根据地址来寻找数据的技术
  • re + requests 已经可以写出一些简单的爬虫,但是re表达式太麻烦了,所以才有了xpath这种数据解析的方式
  • re模块中的re表达式相当于是一个模板了,寻找数据的方法就是根据这个模板来找数据
  • xpath,解析数据的方式,就像是知道了数据所在的地址,直接去这个地方去寻找数据就可以了

1.1:寻找数据的方式

  • 可以根据树状结构中寻找结点,可以通过元素和属性进行导航

1.2:作用

  • 是用来解析网页,解析数据。
  • 可以根据不同的网页结构来合理的选择不同的解析数据技术,从本质上来理解,re模块和xpath模块的作用是一样的,都是用来解析数据的

1.3:可以解决的问题

  • 适合解析一些网页结构明显的数据解析

课外知识

  • 主要是用来讲述html、xml和lxml数据之间的联系和关系

html

  • 超文本传输协议,是一种由组织结构性的语言

xml

  • 可拓展标记语言,xpath可以直接使用的语言

lxml

  • 是一个python的第三方的库,可以把html文本(字符型)转换为xml对象(element对象),也就是说在转换为xml语言之后可以使用xpatn语法进行导航了
  • 简单的来说lxml就是用来转换xml和html语言之间的一种桥梁

2:xpath快速入门

  • 介绍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的常用语法
使用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对象
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值