R rvest: не удалось найти функцию xpath_element

Я пытаюсь просто воспроизвести пример rvest::html_nodes(), но сталкиваюсь с ошибкой:

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

Ошибка в do.call(метод, список(parsed_selector)) : не удалось найти функцию "xpath_element"

То же самое происходит, если я загружаю такие пакеты, как httr, xml2, selectr. Кажется, у меня тоже последняя версия этих пакетов...

В каких пакетах находятся такие функции, как xpath_element, xpath_combinedselector? Как заставить его работать? Обратите внимание, что я работаю на Ubuntu 16.04, так что этот код может работать на других платформах...


person Matifou    schedule 29.11.2016    source источник
comment
Возможно, R просто знает, что вы нарушаете условия обслуживания сайта, и просто отказывается вам помочь (что было бы хорошим курсом действий для тех, кто думает о помощи в краже контента).   -  person hrbrmstr    schedule 29.11.2016
comment
Ваш код работает для меня. Вы обновили R и пакеты?   -  person cory    schedule 29.11.2016
comment
Спасибо, что проверили @cory! На какой платформе/версии R вы работаете?   -  person Matifou    schedule 29.11.2016
comment
У меня была аналогичная проблема, которую мне трудно воспроизвести (я использую Ubuntu 14.04, R 3.3.2). Посмотрите, правильно ли работает selectr с чем-то вроде selectr::css_to_xpath("#selectr")   -  person tbrugz    schedule 22.12.2016
comment
install.packages("selectr") работал на меня после этого.   -  person Brandon Bertelsen    schedule 14.10.2018


Ответы (4)


Я понимаю, что эта проблема довольно старая, но я хотел оставить комментарий для тех, у кого могут быть подобные проблемы.

Я наткнулся на эту же ошибку и не смог найти много помощи. Итак, я подумал, что вместо нацеливания на 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()

решил мою проблему.

person timtrice    schedule 07.06.2017

Как указал @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"

person Matifou    schedule 22.03.2017

Я решил эту проблему, обновив xml2 непосредственно в моей локальной библиотеке R, а не полагаясь на импорт rvests.

install.packages("xml2")

person MarkeD    schedule 08.08.2017

была такая же проблема. Я установил rverse прямо из ноутбука Jupyter на macOS 10.13.5. Переустановка rverse непосредственно из r-shell исправила это для меня. Шаги: 1. Введите r в терминал и нажмите enter. 2. install.packages('rvest')

person Chidi    schedule 23.06.2018