You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R的rvest提取网页表格<tr>标签的data-id属性?

解决rvest提取标签data-id属性的问题

嘿,我来帮你搞定这个抓取波兰选举选区data-id的问题!你之前得到named character(0)的结果,大概率是因为节点选择的方式不够精准,或者用错了提取属性的函数。咱们一步步来修正:

问题分析

你的原代码嵌套了三次html_nodes(),虽然逻辑上是找表格,但可能中间的过滤步骤不小心排除了带有data-id属性的<tr>标签;另外html_attrs()会返回标签的所有属性组成的列表,而你只需要data-id这一个特定属性,用它反而容易得到空结果。

修正后的代码

直接定位到带有data-id属性的<tr>标签,然后用html_attr()精准提取目标属性:

library(dplyr)
library(rvest)

# 读取目标页面
page <- read_html("https://wybory.gov.pl/prezydent20200628/pl/wyniki/1/pow/26400")

# 提取所有带有data-id属性的<tr>标签的data-id值
district_ids <- page %>%
  html_nodes('tr[data-id]') %>%  # 直接选择有data-id属性的行
  html_attr("data-id")  # 提取指定属性的值

# 查看结果
print(district_ids)

为什么这样有效?

  1. 精准定位节点:tr[data-id]是CSS选择器的写法,直接筛选出所有包含data-id属性的<tr>标签,比多层嵌套找表格更高效,也不会漏掉目标元素。
  2. 指定提取属性:html_attr("data-id")会直接返回每个<tr>标签的data-id属性值,没有的话会返回NA,而不是返回所有属性的列表,结果更清晰。

补充说明

如果你的目标表格确实在table-responsive容器和指定class的表格里,也可以加上更具体的筛选(避免页面其他表格干扰):

district_ids <- page %>%
  html_nodes('.table-responsive .table.table-bordered.table-striped.table-hover tr[data-id]') %>%
  html_attr("data-id")

这样会先定位到目标表格,再提取其中带data-id的行,更稳妥。

内容的提问来源于stack exchange,提问作者AAAA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 13:13:13