Xpath爬虫语法学习

在讲Xpath语法之前,首先我们需要了解一下Lxml库,要不然就算我们知道语法了,没有库的支持一切都是白搭,废话不多说,直接进入主题。

1、Lxml库

  1. Lxml库的基本概念:
    Lxml是Python中的一个解析库,支持Xpath语法解析方式,可以用来解析Xml结构,由于Html结构和Xml结构大致相似都是树形结构,所以Lxml也可以解析Html。

  2. Lxml库的常见模块:Etree
    我先来谈谈我对这个库的认识,Etree库的作用是对爬取出来的Html页面进行初始化操作,下面简单列举一下Etree模块的用法:

    1、

    文本转换成HTML对象#HTML方法
    html = etree.HTML(text) 
    

    2、

    将对象转成html文本
    html = etree.HTML(text) 
    result = etree.tostring(html)
    

    3、

    解析页面并返还Html对象
    html = etree.parse('text.html')
    

当然这个模块下想必不止这一些方法,Lxml库下也不止着一些模块,这边由于本人能力有限不能一一向大家介绍清楚,感兴趣的可以自己深入了解一下哈哈哈,这边草率地介绍一下爬虫解析页面时常用的三种方法。

  1. Lxml安装:

    1. 命令行安装win+r,输入Cmd,进入终端模式(配好Python的环境变量)
      在这里插入图片描述
      2.在开发工具里面安装库包,这里作者用的时Pycharm,不过Pycharm安装库包的尿性大伙应该都清楚^ ^
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

输入Lxml,回车,不过作者这边死活加载不出来,见谅。

以上是作者对lxml的认识,如果有哪里没说完整、说错了的,发评论吐槽一下哈哈哈,人不挨打,长大不了,此外,作者了解了有关这方面的新知识,也会第一时间地更新博客,

1、Xpath篇

  1. Xpath的基本概念:
    通过路径表达式在XML、HTML文档里面寻找节点,进行导航

  2. Xpath内部的基本函数:
    XPath 含有超过 100 个内建的函数。这些函数用于字符串值、数值、日期和时间比较、节点和 QName 处理、序列处理、逻辑值等等。

  3. Xpath是W3C标准:
    XPath 于 1999 年 11 月 16 日 成为 W3C 标准。
    XPath 被设计为供 XSLT、XPointer 以及其他 XML 解析软件使用。

  4. Xpath节点:
    类似于XML,整个HTML是被当做节点树对待的,
    分为7类节点:元素,属性,文本,命名空间,处理指令,注释,根节点(文档节点)。

其实把它理解成网页Html的结构,比如《div></div》(makedown编辑器不支持<>符号)这种,无非是中间的英文单词换一个,有没有加一个class罢了,到时候直接F12 copy Xpath就好没必要想这么复杂。
5. Xpath节点之间的关系:

一、父关系

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

这里book就是titile、author、year、price的父级
二、子关系

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

继续套用上面的代码,titile、author、year、price就是book的子级
三、同胞

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

这里title、author、year、price就是四胞胎
四、先辈
先辈指的是子级的父或者子级的父的父

<bookstore>

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

</bookstore>

这里title、author、year、price四个的先辈分别指的是book和bookstore
五、后代
后代和先辈的意思正好反着来,也就是子代以及子子代

<bookstore>

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

</bookstore>

这里book、title、author、year、price就是bookstore的后代

现在简单梳理一下总共五种关系分别是:子代、父代、同胞、后代、先辈

  1. 选取节点:
表达式 描述
nodename 选取此节点的所有子节点
/ 从根节点选取 / 匹配某一个节点
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
. 选取当前节点。
选取当前节点的父节点。
@ 选取属性
  1. 谓语
    谓语用来查找某个特定的节点或者包含某个指定的值的节点。
    谓语被嵌在方括号中。
路径表达式 描述
/a/b[1] 选取属于a子元素的第一个b元素。
/a/b[last()] 选取属于a子元素的第一个b元素。
/a/b[last()-1] 选取属于a子元素的第二个b元素。
/a/b[position() < 3] 选取最前面的两个属于 a 元素的子元素的 b 元素。
/a/b[@lang=‘tom’] 选取属于a子元素属性为lang且值为tom的b元素。
/a/b[price>35.00] 选取属于a子元素中的b元素,且price属性大于35。
  1. 通配符
通配符 描述
* 所有元素节点
@* 所有带属性的节点
node() 所有节点

9.若干个路径同时匹配
通过在路径表达式中使用“|”运算符,您可以选取若干个路径。
将自己copy好的两个路径中间用 | 符号隔开就好

10.xpath在网页中路径的拷贝
一、随便打开一个网站,这里我选用的是Chrome浏览器,不同浏览器的检查可能会不一样。

二、F12打开终端

三、选择光标选择自己需要拷贝Xpath代码的位置,实时定位
在这里插入图片描述
在这里插入图片描述
例如我移到到这,检查器就会自动追踪Html代码的位置
右键代码,在这里会有很多可以转换的格式,这里我们选择的是Xpath
在这里插入图片描述
/html/body/div[14]/div[4]/div[1]
这个是我拷下来的选中区域的Xpath的路径表达式

很多内容摘抄置https://www.w3school.com.cn/index.html,感兴趣的小伙伴也可以到这里进行学习,如有侵权,请联系作者,谢谢。

发布了6 篇原创文章 · 获赞 1 · 访问量 195

猜你喜欢

转载自blog.csdn.net/tomm5/article/details/104011775