2016-11-29 96 views
5

我想简单地复制的rvest::html_nodes()的例子,但遇到了一个错误:[R rvest:找不到功能“xpath_element”

library(rvest) 
ateam <- read_html("http://www.boxofficemojo.com/movies/?id=ateam.htm") 
html_nodes(ateam, "center") 

Error in do.call(method, list(parsed_selector)) : could not find function "xpath_element"

,如果我打开包,如httr发生同样的情况, xml2selectr。我似乎也有这些软件包的最新版本...

在哪些软件包功能,如xpath_element,xpath_combinedselector位于?我如何使它起作用?请注意,我在Ubuntu 16.04上运行,以便代码可能在其他平台上工作...

+0

也许[R才知道您违反服务的网站的条款和拒绝帮助你只(这将是任何人想帮助启用内容盗窃行为的一个很好的课程)。 – hrbrmstr

+0

你的代码适合我。你有更新R和包吗? – cory

+0

感谢您检查@cory!你在哪个平台/ R版本上? – Matifou

回答

1

正如@tbrugz指出的,问题似乎来自包selectr

然而,只有在软件包安装了apt-get install r-cran-selectr时才会出现这种情况。用sudo R安装软件包,然后install.packages工作正常。

pkg <- installed.packages() 
subset(as.data.frame(pkg), Package=="selectr", c("Package", "LibPath")) 
     Package           LibPath 
    selectr selectr /home/matifou/R/x86_64-pc-linux-gnu-library/3.3 
    selectr.1 selectr       /usr/lib/R/site-library 
library(selectr, lib.loc="/home/matifou/R/x86_64-pc-linux-gnu-library/3.3") 
css_to_xpath(".testclass") 
    [1] "descendant-or-self::*[@class and contains(concat(' ', normalize- space(@class), ' '), ' testclass ')]" 

detach("package:selectr", unload=TRUE) 

library(selectr, lib.loc="/usr/lib/R/site-library") 
css_to_xpath(".testclass") 
    Error in do.call(method, list(parsed_selector)) : 

找不到函数“xpath_class”

2

我明白这个问题比较老了,但我想后对于那些谁可能有类似的问题发表评论。

我偶然发现this same error,无法找到很多帮助。所以,我认为不是针对CSS,而是尝试定位xpath。我不知道最佳做法是什么。

我原来的功能在Ubuntu 16,R 3.4.0上运行良好。但是,它们在Debian 8 R 3.3.3和R 3.4.0上失败了。

当我修改我的代码来定位xpaths而不是css时,他们开始按预期工作。例如,改变这个...

contents <- link %>% 
    xml2::read_html() %>% 
    rvest::html_nodes(css = "pre") %>% 
    rvest::html_text() 

这个...

contents <- link %>% 
    xml2::read_html() %>% 
    rvest::html_nodes(xpath = "//pre") %>% 
    rvest::html_text() 

解决了我的问题。

0

我通过将xml2直接更新到我的本地R库而不是依靠rvests导入来解决此问题。

install.packages("xml2")