网页解析神器XPath的使用|8月更文挑战

311 阅读3分钟

网页解析神器XPath

  1. lxml下载
  2. xpath基本用法
  3. xpath插件

Xpath及XML路径语言,它是一门在XML文档查找信息的语言。

一:lxml下载以及安装

  1. 首先需要解决lxml的安装问题,在Windows下我们可以尝试使用pip install lxml 下载,如果没有任何报错的,恭喜安装成功,下面可以进行骚操作了;如果出现报错,出现的提示出现libxml2库等信息,可以采用wheel安装。
  2. wheel的安装方法:推荐去 www.lfd.uci.edu/~gohlke/pyt…下载对应的lxml文件,切换到下载文件的目录下,进入cmd,pip install {文件名}.wheel进行安装。

二:xpath的使用方法

介绍一下xpath的常用规则:

表达式描述示例结果
nodename选取此节点的所有子节点xbhog选取xbhog下所有的子节点
/如果是在最前面,代表从根节点选取。否则选择某节点下的某个节点/xbhog选取根元素下所有的xbhog节点
//从全局节点中选择节点,随便在哪个位置//xbhog从全局节点中找到所有的xbhog节点
@选取某个节点的属性//xbhog[@price]选择所有拥有price属性的xbhog节点
.当前节点./a选取当前节点下的a标签
路径表达式描述
/bookstore/book[1]选取bookstore下的第一个子元素
/bookstore/book[last()]选取bookstore下的倒数第二个book元素。
bookstore/book[position()<3]选取bookstore下前面两个子元素。
//book[@price]选取拥有price属性的book元素
//book[@price=10]选取所有属性price等于10的book元素

这些基本规则基本上满足日常需求了,如果还有其他问题,百度是个好东西你值得拥有。

下面举个例子实战一下:

下面是我博客的内容,我们需要做的就是爬取这一页的标题内容:[两个数组的交集.......],想一下!

image-20210801112157882

我们先打开开发者模式,找到标题所在的网页源代码:

img

我们从最里面一步一步往外推,<a> --> <h4> --> <div class="article-item-box csdn-tracking-statistics"> --><div class="article-list">

 <div class="article-list"> 是  <h4> 标签的父节点
 ​
 <div class="article-list"> 是  <a>  标签的孙节点
 ​
 <h4> 是 <a> 标签的父节点

所以我们可以参照上面的常用规则写出:

 //div[@class='article-list']//h4

我们看到下图中的标题都已经选中了,这就证明我们写的表达式正确。

image-20210801112337678

三:插件介绍

有人会发现我图片中出现黑色的框,这是谷歌的一个插件(xpath helper), 在chrome浏览器安装好xpath helper插件后,

点击 Ctrl + Shift + X 激活 XPath Helper 的控制台,然后您可以在 Query 文本框中输入相应 XPath 进行调试了,提取的结果将被显示在旁边的 Result 文本框中,可以实时检测自己的表达式是否正确。

img

最后有个小补充,如果你不想写xpath语法,你还可以F12,选中你想要的信息右击,copy--copy xpath

缺点:

  • 没有手写的简洁,copy的比较繁琐,不利于阅读,不好维护

image-20210801112456412

结束:

如果你看到这里或者正好对你有所帮助,希望能点个关注或者推荐,感谢;

有错误的地方,欢迎在评论指出,作者看到会进行修改。