Ошибка при использовании html_nodes из пакета rvest [duplicate]

Короткий ответ НЕТ, у нас на этом этапе в CSS нет parent selector, но если вы все равно не хотите менять элементы или классы, второй вариант использует JavaScript, что-то вроде этого:

var activeATag = Array.prototype.slice.call(document.querySelectorAll('a.active'));

activeATag.map(function(x) {
  if(x.parentNode.tagName === 'LI') {
    x.parentNode.style.color = 'red'; //your property: value;
  }
});

или более короткий путь, если вы используете jQuery в своем приложении:

$('a.active').parents('li').css('color', 'red'); //your property: value;
6
задан Matifou 29 November 2016 в 20:15
поделиться

4 ответа

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

install.packages("xml2")

0
ответ дан MarkeD 20 August 2018 в 12:20
поделиться

Как отметил @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"

1
ответ дан Matifou 20 August 2018 в 12:20
поделиться

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

0
ответ дан Notable1 20 August 2018 в 12:20
поделиться

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

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

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

2
ответ дан timtrice 20 August 2018 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: