学习XPath助力爬取中秋各大电商平台数据

简介: 学习XPath助力爬取中秋各大电商平台数据

目录


  1. XPath是什么?
  2. 浏览器插件: XPath Helper
  3. XPath节点
  4. XPath语法
  5. XPath运算符
  6. 实战案例


XPath是什么?


  1. XPath是一门在XML文档中查找信息的语言。
  2. XPath提供的路径表达式方便我们在XML文档中选取节点或节点集合。
  3. XPath提供了大量的标准函数,如:处理字符串,数值,日期,时间,节点,逻辑关系等。
  4. XPath符合W3C标准。


浏览器插件: XPath Helper


我们通过浏览器插件来验证我们的写XPath语句是否成功更为方便。

  1. 在Chrome浏览器的商店搜索XPath Helper并添加。

1.png

  1. 打开目标网站后点击我们的插件图标呼出操作栏
  1. 操作栏左侧为XPath语句
  2. 操作栏右侧为匹配结果

2.png


XPath节点


对于XPath来说也是包含了节点,值,节点间的关系三部分。节点有元素,属性,文本,命名空间,指令,注释和根节点7类,节点间的关系有父子关系,兄弟关系,先辈关系,后代关系。


XPath语法


// 案例演示使用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>
        <h3 style="font-weight: 500;">Hello XPath 1</h3>
        <h3 style="font-weight: 600;">Hello XPath 2</h3>
        <h3 style="font-weight: 600;">Hello XPath 3</h3>
    </div>
</body>
</html>

选取节点:
  1. 选取文档所有节点:Root node name
  2. 从根节点选取:/
  3. 从任意位置选择://
  4. 选取当前节点:.
  5. 选取当前节点的父节点:..
  6. 选取属性: @
  7. 案例:
  1. 选取根元素:/html
  2. 从根元素开始选取div下的所有子元素:/html/body/div
  3. 从根元素开始选取div下的所有h3元素:/html/body/div//h3
  4. 从任意位置选取h3元素://h3
  5. 从任意位置选取style属性://@style

谓语:

缩小节点的选取到指定位置

  1. 选取div下第一个h3:/html/body/div/h3[1]
  2. 选取div下最后一个h3:/html/body/div/h3[last()]
  3. 选取div下倒数第二个h3:/html/body/div/h3[last()-1]
  4. 选取div下前两个h3:/html/body/div/h3[position()<3]
  5. 选取所有带style属性的h3:/html/body/div/h3[@style]
  6. 选取所有带style属性且值为600磅的h3:/html/body/div/h3[@style="font-weight: 600;"]
  7. 选取title元素和div下的所有子元素:/html/head/title | /html/body/div

选取未知节点:
  1. 匹配未知元素:*
  2. 匹配未知属性:@*
  3. 匹配任何类型的节点:node()


XPath运算符


图表来源:www.runoob.com/xpath/xpath…

运算符 描述
+ 加法
- 减法
* 乘法
div 除法
= 等于
!= 不等于
< 小于
<= 小于或等于
> 大于
>= 大于或等于
or
and
mod 计算除法的余数


利用中秋各大电商平台页面实战


目标:
  1. 获取搜索到的第一件商品的信息。
  2. 获取搜索到的前三件商品的信息。
  3. 获取搜索到的最后一件商品的信息。
  4. 获取搜索到的价格大于200元的商品信息。


淘宝平台实战:


s.taobao.com/search?q=中秋月饼


商品各字段匹配:
  1. 匹配商品名称:

//div[@data-category="auctions"]/div[2]/div[2]/a 2. 匹配价格://div[@data-category="auctions"]/div[2]//div[@class="price g_price g_price-highlight"]/strong 3. 付款人数://div[@data-category="auctions"]/div[2]/div[1]/div[2] 4. 匹配封面://div[@data-category="auctions"]/div[1]//img/@src

匹配搜索到的第一个商品:
//div[@data-category="auctions"][1]

3.png

匹配搜索到的前三个商品:
//div[@data-category="auctions"][position()<=3]

4.png

匹配搜索到的最后一个商品:
//div[@data-category="auctions"][last()]

5.png

//div[@class="price g_price g_price-highlight"][strong>200]/../../..

6.png


备注:我们也可以通过浏览器的开发者工具来直接获得XPath后再手工调整来节省时间,如下图所示。

  1. Copy XPath://*[@id="bd672fe6-3dd0-475e-96db-4b0fe71f72eb"]/div[2]/div/div[1]/div/div/div/div[1]/a
  2. Copy full XPath:/html/body/div/div/section/section/main/div[2]/div/div/div[2]/div/div[1]/div/div/div/div[1]/a

7.png


结语


通过浏览器的开发者工具我们可以看到选取节点的方式有selector,JSPath等,选择自己习惯用的就可以了,熟练的选取元素节点为你的爬虫添砖加瓦吧~~~



相关文章
|
数据采集 存储 架构师
上进计划 | Python爬虫经典实战项目——电商数据爬取!
在如今这个网购风云从不间歇的时代,购物狂欢持续不断,一年一度的“6.18年中大促”、“11.11购物节”等等成为了网购电商平台的盛宴。在买买买的同时,“如何省钱?”成为了大家最关心的问题。 比价、返利、优惠券都是消费者在网购时的刚需,但在这些“优惠”背后已产生灰色地带。
|
数据库
gorm 事务的使用
gorm 事务的使用
337 0
|
存储 Oracle 关系型数据库
Docker-14:Docker安装Oracle11g
Docker 安装 Oracle
3582 1
Docker-14:Docker安装Oracle11g
|
Kubernetes 应用服务中间件 Docker
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
|
机器学习/深度学习 自然语言处理 算法
基于python旅游景点满意度分析设计与实现
本文介绍了一个基于Python的情感分析系统,旨在通过CNN算法、LDA主题模型和jieba分词等自然语言处理技术,对海口市旅游景点的网络评论进行满意度分析,以客观评估和提升游客体验及景点服务质量。
453 1
|
存储 XML 数据处理
Python网络实践:去哪儿旅游数据爬取指南
Python网络实践:去哪儿旅游数据爬取指南
423 1
|
数据采集 数据可视化 搜索推荐
Python爬虫技术从去哪儿网获取旅游数据,对攻略进行可视化分析,提供全面的旅游攻略和个性化的出行建议
本文利用Python爬虫技术从去哪儿网获取旅游数据,通过数据处理和可视化分析,提供了全面的旅游攻略和个性化出行建议,同时探讨了热门目的地、出游方式、时间段以及玩法的偏好,为旅游行业和游客提供了有价值的参考信息。
902 9
|
数据采集 数据挖掘 Python
python爬虫去哪儿网上爬取旅游景点14万条,可以做大数据分析的数据基础
本文介绍了使用Python编写的爬虫程序,成功从去哪儿网上爬取了14万条旅游景点信息,为大数据分析提供了数据基础。
1055 1
|
监控 安全 Linux
Linux命令truss详解:系统调用跟踪的利器
`truss`(或`strace`)是Linux调试利器,用于跟踪系统调用和信号。它帮助开发者优化性能、调试错误和进行安全审计。通过附加到进程,记录调用细节、参数、返回值和错误。使用参数如`-d`显示调试信息,`-e`跟踪特定调用,`-o`输出到文件,`-p`跟踪指定进程。注意其对性能的影响,通常需要root权限,并建议过滤输出和结合其他工具分析。