如何用rvest爬取新闻网站文章URL?代码返回NA求修正
解决rvest爬取文章URL返回NA的问题
问题分析
你使用的.diJdnO选择器对应的元素不包含href属性,所以提取时全部返回NA。这类依赖动态样式的网站,Selector Gadget容易选中样式容器而非实际承载链接的<a>标签。
修正后的代码
直接定位承载文章链接的<a>标签(该网站中文章标题嵌套在<a>标签内,是跳转的实际载体):
library(rvest) library(tidyverse) link <- "https://www.theroot.com/news/criminal-justice" webpage <- read_html(link) # 提取文章标题对应的<a>标签的href属性 article_links <- webpage %>% html_nodes("article h2 a") %>% html_attr("href") # 统一处理为完整URL(兼容相对路径情况) full_article_links <- case_when( str_starts(article_links, "http") ~ article_links, TRUE ~ paste0("https://www.theroot.com", article_links) )
关键说明
- article h2 a是基于网站DOM结构的精准选择:所有文章内容包裹在
<article>标签内,文章标题使用<h2>标签,而标题本身就是可点击的链接(<a>),该标签的href属性即为文章的URL。 - 加入路径判断是为了兼容网站可能返回的相对/绝对路径两种格式,确保最终得到的是可直接访问的完整URL。
内容的提问来源于stack exchange,提问作者Joshua Crutchfield
相关产品推荐
相关产品推荐

