在R语言爬取表格时,如何将超链接URL存入数据框?
解决网页表格超链接URL提取的简便方法
嘿,我完全懂你现在的烦恼——爬网页表格时,明明想要超链接的实际URL,结果总是抓到显示文本,一个个写XPath又太费时间对吧?其实rvest里早就有更高效的方式,不用重复写XPath就能批量提取href属性,我来给你捋清楚:
核心思路:用html_attr()配合节点选择器批量提取
你不用找html_nodes的特殊参数,而是先定位到所有表格里的<a>标签节点,再用html_attr("href")一次性提取所有链接的URL,步骤超简单:
举个实际的代码例子,一看就懂:
library(rvest) # 先读取目标网页 target_page <- read_html("你的目标网页地址") # 用CSS选择器定位表格内的所有超链接节点 # 这里的"table td a"表示选中表格<td>单元格里的所有<a>标签,可根据你的表格结构调整 table_link_nodes <- target_page %>% html_nodes("table td a") # 批量提取所有超链接的href属性(也就是URL) link_urls <- table_link_nodes %>% html_attr("href") # 如果需要同时保存显示文本和URL,直接生成数据框就行 link_table <- data.frame( 显示文本 = table_link_nodes %>% html_text(), 链接URL = link_urls )
优化技巧:精准定位节点
如果你的表格有特定的class或id,还可以优化CSS选择器让定位更精准,比如:
- 要是表格有
class="data-table",就用html_nodes("table.data-table td a") - 要是超链接有特定class,比如
class="entry-link",就用html_nodes("table td a.entry-link")
额外补充:处理相对路径
如果提取到的URL是相对路径(比如/article/123),可以用url_absolute()转成绝对路径:
library(rvest) # 假设原网页地址是base_url base_url <- "https://example.com" absolute_urls <- link_urls %>% url_absolute(base_url)
这样就不用再逐个写XPath啦,一次性就能搞定表格里所有超链接的URL提取,是不是比之前高效多了?
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

