2016-11-29 27 views
5

Tôi cố gắng để đơn giản là sao chép ví dụ của rvest::html_nodes(), tuy nhiên gặp phải một lỗi:R rvest: không thể tìm thấy chức năng "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"

Cùng xảy ra nếu tôi tải gói như httr, xml2, selectr. Dường như tôi cũng có phiên bản mới nhất của các gói này ...

Trong đó các gói là các chức năng như xpath_element, xpath_combinedselector nằm? Làm thế nào để tôi làm việc đó? Lưu ý rằng tôi đang chạy trên Ubuntu 16.04, để mã có thể hoạt động trên các nền tảng khác ...

+0

lẽ R chỉ biết bạn đang vi phạm các điều khoản của trang web của dịch vụ và từ chối để giúp bạn chỉ (đó sẽ là một khóa học tốt của hành động cho bất cứ ai nghĩ đến việc giúp đỡ cho phép đánh cắp nội dung). – hrbrmstr

+0

Mã của bạn hoạt động cho tôi. Bạn đã cập nhật R và các gói chưa? – cory

+0

Cảm ơn bạn đã kiểm tra @cory! Bạn đang sử dụng phiên bản nền tảng/R nào? – Matifou

Trả lời

1

Như được chỉ ra bởi @tbrugz, vấn đề dường như có dạng gói selectr.

Điều này xảy ra tuy nhiên chỉ khi gói được cài đặt với apt-get install r-cran-selectr. Cài đặt gói với sudo R, sau đó install.packages hoạt động tốt.

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)) : 

không thể tìm thấy chức năng "xpath_class"

2

Tôi hiểu vấn đề này là khá cũ nhưng tôi muốn viết bình luận cho những người có thể có những vấn đề tương tự.

Tôi tình cờ gặp this same error và không thể tìm thấy nhiều trợ giúp. Vì vậy, tôi nghĩ thay vì nhắm mục tiêu CSS, tôi sẽ cố gắng nhắm mục tiêu xpath thay vào đó. Tôi không biết thực hành tốt nhất là gì.

Chức năng ban đầu của tôi hoạt động tốt trên Ubuntu 16, R 3.4.0. Tuy nhiên, chúng không thành công trên Debian 8 R 3.3.3 và R 3.4.0.

Khi tôi sửa đổi mã của mình để nhắm mục tiêu xpath thay vì css, chúng bắt đầu hoạt động như mong đợi. Ví dụ, thay đổi này ...

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

này ...

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

giải quyết vấn đề của tôi.

0

Tôi đã giải quyết vấn đề này bằng cách cập nhật xml2 trực tiếp vào thư viện R địa phương của tôi thay vì dựa vào nhập khẩu rvests.

install.packages("xml2")

Các vấn đề liên quan