xpath介绍

目录

  • 1:xpath
    • 1.1:寻找数据的方式
    • 1.2:作用
    • 1.3:可以解决的问题
    • 课外知识
      • html
      • xml
      • lxml
  • 2:xpath快速入门
    • 2.1:基本知识
    • 2.2:解释
  • 3:使用xpath选取结点
            • 使用xpath选取结点
            • 选取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

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

lxml

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

2:xpath快速入门

  • 介绍xpath的基本语法

2.1:基本知识

  • 示例代码
xml_content = '''


    Harry Potter
    JK.Rowing
    2005
    29


'''

2.2:解释

  • 上面xpath结点例子
    • :文档结点,也就是这个标签下的数据
    • JK.Rowing:元素结点,也就是这个结点下面的元素是一个文档的属性
    • :属性结点,也就是说这个结点是有一定的属性
  • 各个结点之间的关系
    • 父(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对象

你可能感兴趣的:(python,爬虫)