使用rvest抓取维基百科:移除行内引用编号问题
解决rvest抓取维基百科表格时移除行内引用编号的问题
我之前也碰到过维基百科表格里这种<sup>标签包裹的引用编号问题——直接用html_table()抓取的话,这些小数字会跟着文本一起被提取出来,确实很影响数据整洁度。
其实解决思路很简单:在提取表格之前,先把表格里所有的<sup>节点删掉,再进行表格转换。修改后的代码如下:
library(rvest) library(tidyverse) # 读取目标页面并定位到指定表格 wiki_page <- read_html("https://de.wikipedia.org/wiki/Ergebnisse_der_Landtagswahlen_in_der_Bundesrepublik_Deutschland") target_table <- wiki_page %>% html_nodes(xpath = '//*[@id="mw-content-text"]/div/table[10]') # 移除表格内所有包含引用编号的sup标签 target_table %>% html_nodes("sup") %>% html_remove() # 提取清理后的表格数据 clean_table <- target_table %>% html_table() %>% .[[1]] # 可以查看前几行验证效果 head(clean_table)
代码解释:
- 我们先单独定位到目标表格节点,而不是直接链式调用到底,这样能对表格节点做预处理
html_nodes("sup")会选中表格里所有的引用编号标签,html_remove()则直接删除这些节点——这样它们包含的数字就不会被包含在后续提取的文本里了- 最后再用
html_table()提取表格,得到的就是没有多余引用编号的干净数据
如果之后碰到其他类似的冗余标签(比如某些注释类标签),也可以用同样的逻辑,把"sup"换成对应的标签选择器即可。
内容的提问来源于stack exchange,提问作者Marcel Schliebs
相关产品推荐
相关产品推荐

