2016-11-29 2 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などのパッケージをロードする場合、同じ問題が発生し、 xml2,selectr。私はこれらのパッケージの最新バージョンを持っているようです...

xpath_elementxpath_combinedselectorのような機能のパッケージはありますか?どうすればそれを動作させることができますか?私がUbuntu 16.04で動作しているので、コードが他のプラットフォームでも動作するかもしれないことに注意してください。

+0

おそらく、Rはちょうどあなたがサービスのサイトの規約に違反している知っていると(コンテンツの盗難を有効に支援することを考えて、誰のためのアクションの良いコースされるであろう)だけであなたを助けることを拒否。 – hrbrmstr

+0

あなたのコードは私のために働く。 Rとパッケージを更新しましたか? – cory

+0

@coryをチェックしていただきありがとうございます!あなたはどのプラットフォーム/ Rバージョンですか? – Matifou

答えて

1

問題はフォームパッケージ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では失敗しました。

私は自分のコードをCSSの代わりにxpathsに変更すると、期待通りに動作し始めました。たとえば、この...これまで

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

私は、rvestsインポートに頼るのではなく、xml2をローカルのRライブラリに直接更新することでこれを解決しました。

install.packages("xml2")

関連する問題