使用R语言爬取SCIELO文章参考文献链接的技术问题
解决方案
你的代码存在两个核心问题:
- 没有限定只抓取参考文献区域的链接,而是获取了页面所有
<a>标签 - 提取的是标签显示文本而非链接的
href属性
以下是修正后的代码:
library(rvest) library(dplyr) # 目标页面链接 link <- "https://www.scielo.org.mx/scielo.php?script=sci_arttext&pid=S2448-76782022000100004&lang=es" page <- read_html(link) # 抓取参考文献区域的所有链接,拼接完整URL ref_links <- page %>% # 定位到参考文献段落内的a标签(页面中每条参考文献都在class为ref的p标签容器里) html_nodes("p.ref a") %>% # 提取链接的href属性(即实际地址) html_attr("href") %>% # 将相对路径拼接为完整可访问的URL paste0("https://www.scielo.org.mx", .) # 验证结果(应返回68条链接) length(ref_links) head(ref_links)
关键说明:
- 精准定位元素:
p.ref a选择器只锁定参考文献段落内的链接,避免抓取页面导航、侧边栏等无关链接 - 提取正确属性:用
html_attr("href")替代html_text(),获取链接的实际地址而非显示的文献标题文本 - 补全URL路径:页面内的参考文献链接是相对路径,必须拼接网站域名才能形成可直接访问的完整链接
内容的提问来源于stack exchange,提问作者Armando González Díaz
相关产品推荐
相关产品推荐

