python爬虫从0到1(第五天)——Xpath与Jsonpath

数据解析之Xpath与Jsonpath

取其精华去其糟粕

通过前面几篇文章的学习,我们已经能够处理简单的需要登录的网站并且能够去分析我们需要的目标数据所在的url了,但可以发现获取到的响应不是一段html文本就是很长的一串json串,也就是说目标数据中掺杂了很多的无用信息。不管是html也好还是json也好,我们都可以很明显的看到它们的结构就像是一个大盒子,大盒子里面又有小盒子这样的结构,而这个入口呢我们可以称其为节点(要深入了解的朋友请自行学习前端三剑,对爬虫来说还是比较重要的)。那么对于节点对应的数据我们又要如何去进行提取呢?其实刚刚已经说过啦,它就像是大盒子里面包含了小盒子,例如html中包含了body和head,body中有有div、table等,所以也能知道其具有的层次关系,所以要去提取出其中的节点的话我们只要去一层一层地剥开它的“皮”就好了。在python中的话是有很多方法能够实现我们的需求的库,在这些库的帮助下我们就能够高效准确得提取出我们需要的目标数据了。

一、Xpath的使用

xpath全称为XML Path Language,即XML路径语言,用以在XML文档中查找信息,同时也是适用于HTML文档的搜索。因此我们完全可以在爬虫中使用xpath来进行信息提取。

1.1 xpath节点关系

在XML或者HTML中的标签就是我们所说的节点,其中最外层的称为根节点。如下方代码的节点分析。

<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title> 
  <author>Giada De Laurentiis</author> 
  <year>2005</year> 
  <price>30.00</price> 
</book>
<book category="CHILDREN">
  <title lang="en">Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title lang="en">Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore>

其转换为树结构如下图所示

在这里插入图片描述

其中我们就可以看到bookstore就是根节点,然后其包含了三个book标签,称其为bookstore子节点,反之称bookstorebook父节点book节点下又有titleauthoryearprice四个子节点,这四个子节点位于同一父节点下互为兄弟节点。代入代码分析是同样的道理,如下图。

在这里插入图片描述

在这里插入图片描述

1.2 lxml的使用

lxml是HTML和XML的解析器,其主要功能就是能够从XML和HTML中解析和提取数据。

安装方式:通过包管理工具pip进行安装

pip install lxml

安装完成后代码中导包进行使用即可,导包方式

from lxml import etree

导包后要将字符串实例化为Element对象,该对象具有xpath的方法,返回的结果为列表类型。

html = etree.XML(text)	# 或html = etree.HTML(text)
# 当为XML时表示处理XML文档,为HTML时表示处理HTML文档
result_list = html.xpath('写入xpath路径表达式')
1.3 Xpath表达式

定位语法主要依赖以下符号

表达式 说明 举例
/ 从根节点开始选取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

quanmoupy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值