R语言rvest爬取网页链接href返回空字符问题排查求助
问题原因
- 页面结构更新:目标站点调整了该页面的DOM结构,你之前通过Selector Gadget获取的
.first-child a选择器已经无法匹配到“Printer-Friendly Minutes”对应的链接节点,实际匹配到的是其他无有效href属性的空a标签,因此返回空字符。 - 协议适配问题:你代码中使用的是HTTP协议的URL,当前目标站点已经全站强制跳转HTTPS,
read_html抓取HTTP地址时会返回跳转中间页内容,无法拿到实际的页面节点。
解决方法
首先更换为HTTPS协议的目标URL,其次使用更稳定的匹配规则,直接通过链接文本定位目标节点,避免依赖易变的类名选择器。
修正后的代码如下:
library(rvest) library(magrittr) library(httr) # 可选,用于处理复杂请求 url <- "https://www.richmond.ca/cityhall/council/agendas/council/2021/012521_minutes.htm" # 使用xpath匹配包含指定文本的a标签,适配性更强 printer_href <- url %>% read_html() %>% html_nodes(xpath = "//a[contains(text(), 'Printer-Friendly Minutes')]") %>% html_attr("href")
如果获取到的是站点相对路径,可使用url_absolute()函数拼接为完整可访问链接:
printer_full_url <- url_absolute(printer_href, url)
内容的提问来源于stack exchange,提问作者beeburt
相关产品推荐
相关产品推荐

