我试图简单地复制rvest::html_nodes()
的示例,但遇到错误:
library(rvest)
ateam <- read_html("http://www.boxofficemojo.com/movies/?id=ateam.htm")
html_nodes(ateam, "center")
do.call中的错误(方法,列表(parsed_selector)):找不到 function&#34; xpath_element&#34;
如果我加载httr
,xml2
,selectr
等软件包,也会发生同样的情况。我似乎也有这些软件包的最新版本......
哪些包是xpath_element
,xpath_combinedselector
等功能?我如何让它工作?请注意,我在Ubuntu 16.04上运行,因此该代码可能适用于其他平台......
答案 0 :(得分:3)
我理解这个问题相当陈旧,但我想对那些可能遇到类似问题的人发表评论。
我偶然发现了this same error并且无法找到太多帮助。所以,我认为不是针对CSS,而是尝试以xpath为目标。我不知道最佳做法是什么。
我的原始功能在Ubuntu 16,R 3.4.0上运行良好。然而,他们在Debian 8 R 3.3.3和R 3.4.0上失败了。
当我修改我的代码以定位xpath而不是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()
解决了我的问题。
答案 1 :(得分:1)
As pointed out by @tbrugz, the issue seems to come form package selectr
.
This happens however only when the package is installed with apt-get install r-cran-selectr. Installing the package with sudo R, then install.packages works fine.
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)) :
could not find function "xpath_class"
答案 2 :(得分:0)
我通过将xml2
直接更新到我的本地R库而不是依赖rvests
导入来解决这个问题。
install.packages("xml2")
答案 3 :(得分:0)
有同样的问题。我已直接从macOS 10.13.5上的Jupyter笔记本电脑安装了rverse
。直接从rverse
重新安装r-shell
可以解决此问题。
脚步:
1.在终端中输入r
,然后按enter
。
2. install.packages('rvest')