如何在R中抓取iframe内信息?以CPS学校页面为例
解决方法
1. 精准定位iframe元素
原页面中的iframe带有唯一ID schoolProfileIframe,用ID选择器替代通用的iframe选择器,能避免误选其他可能存在的iframe:
iframe <- page %>% html_element("#schoolProfileIframe")
2. 正确定位目标文本节点
iframe页面的Supportive School认证信息嵌套在特定DOM结构里,需要用更精准的选择器定位。以下两种方案均可:
方案一:CSS选择器
# 获取包含Established的完整文本 established_info <- iframe_page %>% html_element("div.certification:has(h4:contains('Supportive School')) p:contains('Established')") %>% html_text() # 仅提取年份数字(可选) library(stringr) established_year <- str_extract(established_info, "\\d+")
方案二:XPath选择器(兼容性更强)
# 用XPath精准匹配目标节点 established_info <- iframe_page %>% html_element(xpath = "//div[contains(@class, 'certification') and .//h4[text()='Supportive School']]//p[contains(text(), 'Established')]") %>% html_text() # 仅提取年份数字(可选) library(stringr) established_year <- str_extract(established_info, "\\d+")
3. 验证页面加载状态
如果仍无法获取内容,先打印iframe页面的文本,确认页面是否被正确解析:
cat(html_text(iframe_page))
若输出为空或不包含目标内容,说明网站可能存在动态加载或反爬机制,此时需改用RSelenium等工具模拟浏览器加载页面。
内容的提问来源于stack exchange,提问作者dkro23
相关产品推荐
相关产品推荐

