0

0

利用Rvest和XPath进行高级HTML元素属性选择教程

碧海醫心

碧海醫心

发布时间:2025-09-10 19:43:00

|

619人浏览过

|

来源于php中文网

原创

利用rvest和xpath进行高级html元素属性选择教程

本教程旨在指导R语言用户如何利用rvest包结合XPath表达式,精确地选择和提取HTML文档中具有特定非ID或非Class属性的元素。通过实例演示,您将学习如何使用XPath定位任意属性值匹配的元素,从而克服CSS选择器在处理复杂属性时的局限性,提升网页数据抓取效率和灵活性。

1. rvest与HTML元素选择基础

rvest是R语言中用于网页抓取和解析的强大工具包。它通常与CSS选择器结合使用,通过元素的ID、类名或标签名来定位目标元素。例如,html_elements('#id_name')用于选择ID为id_name的元素,html_elements('.class_name')用于选择类名为class_name的元素,而html_elements('p')则选择所有

标签。

然而,当我们需要根据其他任意属性(例如size、data-value等)来选择元素时,传统的CSS选择器可能会显得力不从心。以下是一个典型的场景,我们将尝试根据font标签的size属性来选择元素:

library(rvest)

# 创建一个最小的HTML文档
html <- minimal_html('
    

Here is size 5 font

And here is size 3 font

') # 尝试使用常规方法选择 html %>% html_elements('#name1') # 成功:通过ID html %>% html_elements('.second') # 成功:通过Class html %>% html_elements('font') # 成功:通过标签名 # html %>% html_elements('#5') # 失败:这不是ID # html %>% html_elements('.5') # 失败:这不是Class

在上述示例中,我们无法直接使用html_elements('#5')或html_elements('.5')来选择size=5的font元素,因为size既不是ID也不是类名。

2. 利用XPath进行高级属性选择

为了解决上述问题,rvest包提供了强大的XPath支持。XPath(XML Path Language)是一种用于在XML文档中查找信息的语言,由于HTML是XML的一种特殊形式,因此XPath同样适用于HTML文档。它允许我们通过元素的层级关系、属性、文本内容等多种方式进行精确选择。

立即学习前端免费学习笔记(深入)”;

要使用XPath,只需在html_elements()函数中指定xpath参数。

2.1 选择具有特定属性值的特定标签

如果目标是选择所有font标签中size属性值为5的元素,可以使用以下XPath表达式:

佳蓝在线销售系统(创业版) 佳蓝在线销售
佳蓝在线销售系统(创业版) 佳蓝在线销售

1、对ASP内核代码进行DLL封装,从而大大提高了用户的访问速度和安全性;2、采用后台生成HTML网页的格式,使程序访问速度得到进一步的提升;3、用户可发展下级会员并在下级购买商品时获得差额利润;4、全新模板选择功能;5、后台增加磁盘绑定功能;6、后台增加库存查询功能;7、后台增加财务统计功能;8、后台面值类型批量设定;9、后台财务曲线报表显示;10、完善订单功能;11、对所有传输的字符串进行安全

下载
# 选择所有font标签中,size属性值为5的元素
elements_with_size_5_font <- html %>% html_elements(xpath = '//font[@size=5]')
print(elements_with_size_5_font)

输出:

{xml_nodeset (1)}
[1] Here is size 5 font 

XPath解释:

  • //:表示从文档的任何位置开始查找。
  • font:指定要查找的元素标签名是font。
  • [@size=5]:这是一个谓词(predicate),用于筛选元素。@size表示元素的size属性,=5表示该属性的值必须等于5。

2.2 选择具有特定属性值的任意标签

如果不仅限于font标签,而是想选择文档中所有size属性值为5的元素(无论其标签名是什么),可以使用通配符*:

# 选择所有标签中,size属性值为5的元素
elements_with_any_tag_and_size_5 <- html %>% html_elements(xpath = '//*[@size=5]')
print(elements_with_any_tag_and_size_5)

输出:

{xml_nodeset (1)}
[1] Here is size 5 font 

XPath解释:

  • *:通配符,表示匹配任何标签名的元素。
  • [@size=5]:与之前相同,筛选size属性值为5的元素。

3. 注意事项与总结

  • CSS选择器与XPath的选择: 对于简单的选择(如ID、Class、标签名),CSS选择器通常更简洁易读。但当需要进行更复杂的选择,例如基于非标准属性、文本内容、兄弟节点或父子关系等,XPath是更强大和灵活的选择。
  • XPath的强大功能: XPath不仅仅局限于属性值匹配。它还可以用于:
    • 通过文本内容选择://p[contains(text(), 'some text')]
    • 通过属性是否存在://img[@src]
    • 通过属性包含特定字符串://a[contains(@href, 'example.com')]
    • 通过位置选择://li[1] (第一个li元素)
    • 通过父子关系://div/p (作为div子元素的p标签)
    • 通过逻辑运算符组合条件://a[@class='link' and @target='_blank']
  • 调试XPath: 编写复杂的XPath表达式时,建议使用浏览器开发者工具(Elements面板通常支持XPath查询)进行测试和验证,以确保其准确性。
  • html_nodes()与html_elements(): 在rvest的早期版本中,主要使用html_nodes()。现在,html_elements()是推荐的函数,它返回一个xml_nodeset对象,与html_nodes()功能相似但更符合现代R包的命名规范。

通过本教程,您应该已经掌握了在rvest中使用XPath进行高级HTML元素属性选择的方法。熟练运用XPath将极大提升您在R语言中进行网页数据抓取和解析的能力,应对更复杂的网页结构和数据提取需求。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1500

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

231

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

87

2025.10.17

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1898

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2091

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1060

2024.11.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

10

2026.01.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

CSS教程
CSS教程

共754课时 | 24.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号