学会XPath,让你的数据采集效率提高20倍

版权声明:八爪鱼数据采集器 https://blog.csdn.net/BAZHUAYUdata/article/details/83895266

在这里插入图片描述
》》》进入八爪鱼数据采集器官网

为什么要写XPath这个话题?

最近发现在用户用八爪鱼采集数据过程中遇到的问题,有80%以上的数据爬取遗漏、不准确的问题,都是因为:

「XPath地址不准确」导致。

比如:

A:“我设计好的规则,怎么采集下来很多空白的数据?”

B:“我采集下来的数据,怎么有那么多不必要的字段?导致我后续清洗数据的工作量非常大。”

C:“为何我采集的数据是错的?”

等等……

这些问题都源自采集数据过程中,数据**「定位」**不够精准导致。

而XPath的最大作用就在于**「精准定位」**目标数据。

1、XPath初相识

什么是XPath?

XPath(XML Path Language),其中XML是用来存储和传输数据的网页文档,Path意为路径。

XPath是在HTML文档中查找信息的语言。

XPath 用于在HTML文档中通过元素和属性进行导航。

什么是HTML?

HTML(Hyper Text Markup Language)超文本标记语言。

HTML,用来描述网页的一种语言。我们日常浏览的网页背后都是一个个HTML文档。我们打开一个网页,点击鼠标右键,点击“查看网页源代码”就能看到该网站的HTML文档。

2、XPath在采集过程中如何工作

在这里插入图片描述
XPath工作原理

XPath的工作原理

网页上的每个元素都有独立的位置,犹如地球上每个地点都有各自的经纬度。要找到这个元素,需要制定一条通往它的路线。

XPath就是这样一条可以精准找到网页文本中某个元素的路径。

在采集过程中,有了XPath路径,八爪鱼便能迅速从HTML文档中,精准定位到用户需要的数据,并采集下来。

采集过程几乎每一步都有XPath

在这里插入图片描述
在八爪鱼制定规则中,除了打开网页以外,其他每个步骤都会有一条XPath。

比如,定位需要提取的数据的XPath。
在这里插入图片描述

比如,定位循环采集列表的XPath。
在这里插入图片描述

在这里插入图片描述

比如,定位循环翻页按钮的XPath。
在这里插入图片描述

为了降低用户使用门槛,八爪鱼内置了一项自动生成XPath的功能。在用户设计采集流程中,会帮用户自动生成一条XPath用于定位用户选中的按钮或字段,以实现采集的目的。

3、XPath为什么重要?

在这里插入图片描述

既然八爪鱼能自动生成XPath,为什么还要学?

八爪鱼XPath自动生成的XPath只能满足基础且结构较单一的的网页采集。

实际上,所有的网站的结构都是复杂且千变万化的,即使同一个网站的同个栏目底下,其子页面的结构也是不尽相同。

只靠自动生成的XPath,你会经常遇到文章开头提到的采集问题。

这时,如果你会写XPath,问题就能迎刃而解了。

学习XPath对你有什么好处?

| XPath可灵活地应对各式各样的网站

学习XPath,就是学习一套通用的网页数据采集的方法原理。不管网站是什么类型或行业的,掌握了方法和原理,犹如掌握了数学公式,外部变量再多,解题的方法还是一样的。

| XPath可提高采集精准度,一击即中

没有对比就没有伤害,我们看下不精准XPath和精准XPath的采集结果对比。

不精准XPath采集结果(出现大量空白字段)
不精准XPath采集结果(出现大量空白字段)

精准XPath采集结果(数据非常完整)
精准XPath采集结果(数据非常完整)

采集结果出现空白字段几乎都是因网页结构发生变化,XPath的路径不够精准,导致你的采集工作来回返工,工作量倍增。如果你懂XPath,就能写一条精准且通用的XPath匹配不同的网页结构。

| XPath可优化采集流程,提高采集速度

采集的速度除了受网速、设备硬件影响以外,也会受到XPath影响。精准的XPath能够快速定位数据,优化采集流程从而提高采集速度。

| XPath能让你体会到高阶采集技巧的乐趣.

XPath是区分数据采集小白和高手的分水岭。许多用户都在XPath这座“山”前倒下。一旦你学会,你就成为了采集界的高手,即使面对再复杂的网站,采数据犹如探囊取物般容易。

这份乐趣,可是只有学会XPath的你才能体会哦。

4、XPath如何学习

八爪鱼提供丰富、全面的XPath教程,让你从小白进阶XPath高手妥妥的。

扫码关注「八爪鱼采集研究院」,并回复“xpath”,获取XPath最全的学习教程!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/BAZHUAYUdata/article/details/83895266