当前位置: 首页 > article >正文

xpath应用大全

一、xpath在爬虫中的应用

1、/div 表示从根节点开始选取div节点

2、/span 表示从根节点开始选取span节点

3、//a 表示选取文档中所有a节点而不考虑其位置

4、@class 表示选取名为class的属性

5、 . 表示选取当前节点

6、 .. 表示选取当前节点的父节点

7、/div/a 表示从根节点开始选取div节点下的a节点

8、 /div/a[2]/img  表示从根节点开始选取div节点下的第二个a节点下的img节点

9、//div[@class='header-wrapper' 表示选取所有属性class的值为header-warpper的div节点

10、//* 表示选取文档中所有元素

11、//@* 表示选取文档中所有带属性的元素

12、/div/p/text() 表示选取p节点的文本内容

13、/div[contains(@class,"post")] 表示选取带有class属性且包含“post”的所有的div节点,取反//div[not(contains(@class,"post"))]

14、//div/p[last()-1] 表示选取div下倒数第二个p节点

15、//div/p[position()>1] 表示选取div下第二个p节点后的所有兄弟节点

二、xpath在爬虫中的应用场景

  1. 定位元素:使用XPath表达式可以精确地定位到网页中的特定元素,如标题、链接、图片等。

  2. 提取数据:结合XPath和爬虫工具(如Python的lxml、BeautifulSoup等库),可以轻松地提取网页中的数据,如商品价格、新闻标题、文章正文等。

  3. 处理复杂的HTML结构:面对复杂的HTML结构,XPath的灵活性和强大功能使其成为处理这类问题的理想选择。

  4. 自动化表单填写:在网页自动化测试或数据提交过程中,XPath可以用来定位表单元素,并模拟用户输入。

 三、使用xpath的基本步骤

  1. 分析网页结构:首先,你需要分析目标网页的HTML结构,确定要提取的数据位于哪些元素中。

  2. 编写XPath表达式:根据网页结构,编写XPath表达式来定位并提取所需的数据。XPath表达式可以使用标签名、属性、位置等信息来构建。

  3. 使用XPath提取数据:在你的爬虫脚本中,使用XPath解析库(如lxml、BeautifulSoup等)来执行XPath表达式,并提取数据。

四、xpath进阶用法

  1. 位置谓词
    • //ul/li[1]:选择ul下的第一个li元素。
    • //div[@class='article']/p[position()=last()]:选择classarticlediv下的最后一个p元素。
  2. 比较运算符
    • //p[@id='para1']:选择id属性为para1p元素。
    • //a[@href!='#']:选择href属性不等于#a元素。
  3. 逻辑运算符
    • //input[@type='text' and (@name='username' or @name='email')]:选择typetextnameusernameemailinput元素。
  4. 内置函数
    • contains(str1, str2):判断str1是否包含str2
    • starts-with(str, prefix):判断字符串str是否以prefix开头。
    • substring-before(str, delim):返回strdelim之前的子字符串。
    • substring-after(str, delim):返回strdelim之后的子字符串。

 


http://www.kler.cn/a/320622.html

相关文章:

  • Linux最深刻理解页表于物理内存
  • 常用命令之LinuxOracleHivePython
  • nfs服务器--RHCE
  • Linux下多线程
  • Win10/11 安装使用 Neo4j Community Edition
  • 使用 TensorFlow 实现 ZFNet 进行 MNIST 图像分类
  • Relations Prediction for Knowledge Graph Completion using Large Language Models
  • PG逻辑订阅功能
  • 数据分析师之Excel数据清洗
  • 开始场景的制作+气泡特效的添加
  • 【Webpack】实现持久化缓存
  • 两台虚拟机之分布式部署
  • 如何理解MVCC
  • .net 之内存回收
  • 阿里云服务器发布node服务后,连接不上
  • 简单分享下Python的if
  • 华为HarmonyOS灵活高效的消息推送服务(Push Kit) - 4 获取Push Token
  • 科研绘图系列:R语言连线点图(linechart dotplot)
  • 浅析安科瑞Acrel-1000DP分布式光伏监控系统在某煤矿5MW分布式光伏项目中的应用-安科瑞 蒋静
  • [mongodb][配置]MongoDB中限制内存
  • Ceph官方文档_02_Ceph初学者指南
  • 功能测试详解
  • npm run serve报错提示js堆内存不足
  • elastic search后端安装方法(服务端)
  • DCGAN生成人脸图片
  • g1:基于 Llama,用提示工程实现类似 o1 的深度推理