执行R代码触发xpathApply方法报错,是否存在参数缺失?
问题分析与解决
这个报错不是由于缺少参数导致的。
报错原因
getNodeSet(其底层依赖xpathApply函数)要求第一个参数必须是解析后的XML/HTML文档对象,但你传入的doc是字符类型的原始文本,不符合函数的参数类型要求,因此触发了类型不匹配的错误。
解决方法
先将原始的字符文本解析为XML/HTML文档对象,再调用getNodeSet:
处理XML文本(使用XML包)
library(XML) # 将字符类型的doc解析为XML文档对象 doc_parsed <- xmlParse(doc) # 再执行后续操作 anchor <- getNodeSet(doc_parsed, "//a") anchor <- sapply(anchor, function(x) xmlGetAttr(x, "href"))
处理HTML文本(可选XML包或rvest包)
用XML包:
library(XML) doc_parsed <- htmlParse(doc) anchor <- getNodeSet(doc_parsed, "//a") anchor <- sapply(anchor, function(x) xmlGetAttr(x, "href"))
用更简洁的rvest包:
library(rvest) doc_parsed <- read_html(doc) # 直接提取所有a标签的href属性 anchor <- doc_parsed %>% html_elements("a") %>% html_attr("href")
内容的提问来源于stack exchange,提问作者raiden100
相关产品推荐
相关产品推荐

