rvest包html_element()如何按font size属性匹配提取HTML元素
rvest提取指定通用属性HTML元素的实现方法
测试复现用例
首先加载rvest构造测试页面:
library(rvest) html <- minimal_html(' <p id="name1"><font size=5>Here is size 5 font </font></p> <p id="name2" class="second"><font size=3>And here is size 3 font </font></p> ') # 已验证可用的id、class、标签匹配写法 html %>% html_elements('#name1') html %>% html_elements('.second') html %>% html_elements('font') # 无效的错误尝试(仅id、class支持#、.简写语法,普通属性不适用) html %>% html_elements('#5') html %>% html_elements('.5')
解决方案
html_elements()底层原生支持标准CSS选择器语法,除了id、class的简写匹配外,任意普通属性都可以通过[属性名="属性值"]的格式匹配,不需要更换函数,旧版html_nodes()的选择器规则和新版html_elements()完全一致,之前匹配失败是选择器写法错误导致的。
提取所有size=5的<font>元素的正确代码如下:
html %>% html_elements('font[size="5"]')
运行后返回结果符合预期:
{html_nodeset (1)} [1] <font size="5">Here is size 5 font </font>
扩展属性匹配用法
- 若不限定标签,只要页面中带
size=5属性的元素都提取,可直接写html_elements('[size="5"]') - 支持模糊匹配规则:匹配属性值包含指定字符用
[属性名*="匹配值"],匹配属性值以指定内容开头用[属性名^="匹配值"],匹配属性值以指定内容结尾用[属性名$="匹配值"] - 该语法对原生HTML属性、自定义属性(比如
data-*类属性)都生效。
内容的提问来源于stack exchange,提问作者user24465
相关产品推荐
相关产品推荐

