ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

爬虫(5) - 网页数据解析(1) | XPath在爬虫中的应用

2022-07-04 16:31:08  阅读:161  来源: 互联网

标签:XPath 网页 class 爬虫 选取 文档 div 节点


什么是XPath

  • XPath即为XML路径语言(XML Path Language)
  • XPath可以用于定位XML文本的节点
  • 实际上,XPath也适用于定位HTML中的节点

节点及节点间的关系

  • 在HTML中,节点就是一个个HTML标签
  • 分析节点间的关系也就是要清楚HTML文档中各标签间的关系
  • 理清这些关系对于书写XPath路径表达式来说非常重要

节点分类

  • 先辈节点
  • 父节点
  • 兄弟节点
  • 子节点
  • 兄弟节点

 

XPath路径表达式

XPath使用路径表达式来选取XML文档(或是HTML文档)中的节点或节点集;在节点后加上带有数字的方括号,可以根据兄弟节点在文档中出现的先后次序选择元素(数字1为第一个以此类推)

通过在节点后加上带有属性名-值对的方括号,可以筛选出需要的节点

属性值的写法为:@属性名=“属性值”

路径表达式 描述

/div

/span

从根节点开始选取div节点

从根节点开始选取span节点

//a 选取文档中所有a节点而不考虑其位置
@class 选取名为class的属性
. 选取当前节点
.. 选取当前节点的父节点
/div/a 从根节点开始选取div节点下的a节点
/div/a[2]/img 从根节点开始选取div节点下的第二个a节点下的img节点
//div[@class='header-wrapper'] 选取所有属性class的值为header-wrapper的div节点
//* 选取文档中所有元素
//@* 选取文档中所有带属性的元素
/div/p/text() 选取p节点的文本内容
//div[contains(@class,"post")]

选取带有class属性且包含“post”的所有div节点

取反//div[not(contains(@class,"post"))]

/div/p[last()-1] 选取div下倒数第二个p节点
/div/p[position()>1] 选取div下第二个p节点后的所有兄弟节点
/div/a|div/p 选取div下的a节点和div下的p节点

标签:XPath,网页,class,爬虫,选取,文档,div,节点
来源: https://www.cnblogs.com/gltou/p/16327688.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有