2015-03-17 15 views
11

Tôi đang cố gắng xóa dữ liệu web nhưng bước đầu tiên yêu cầu thông tin đăng nhập. Tôi đã có thể đăng nhập thành công vào các trang web khác nhưng tôi đã gặp phải một lỗi lạ với trang web này.Tại sao 'Lỗi: độ dài (url) == 1 không phải là TRUE' với việc thu thập dữ liệu web đầu tư

library("rvest") 
library("magrittr")  

research <- html_session("https://www.fitchratings.com/") 

signin <- research %>% 
    html_nodes("form") %>% 
    extract2(1) %>% 
    html_form() %>% 
    set_values (
    'userName' = "abc", 
    'password' = "1234" 
    ) 

research <- research %>% 
    submit_form(signin) 

Khi tôi chạy dòng 'submit_form' Tôi nhận được lỗi sau:

> research <- research %>% 
+ submit_form(signin) 
Submitting with '<unnamed>' 
Error: length(url) == 1 is not TRUE 

Nộp với vô danh là đúng b/c không có tên được gán cho nút đăng nhập. Bất kỳ trợ giúp nào được đánh giá cao!

+0

là ví dụ này vẫn còn hiệu lực? Khi tôi chạy nó, tôi nhận được 'Lỗi: Tên trường không xác định: userName, mật khẩu'. – WhiteViking

+1

Ngoài ra, có vẻ như vấn đề này là do một lỗi trong rvest và đã được giải quyết bởi tác giả gói đầu tư: https://github.com/hadley/rvest/issues/73 Thật không may là phiên bản chính thức của rvest (với bản sửa lỗi) có được phát hành kể từ đó. Nó có thể có thể tự cài đặt phiên bản mới nhất từ ​​github mặc dù. – WhiteViking

Trả lời

8

Tôi gặp sự cố tương tự. Tôi đã nhảy qua một vài hoops để có được phiên bản dev của rvest running, và nó hoạt động trơn tru. Đây là cách tôi đã thực hiện:

Điều đầu tiên trước tiên. Bạn cần phải cài đặt RTools. Đảm bảo R bị đóng. Điều này có thể được tìm thấy ở đây: https://cran.r-project.org/bin/windows/Rtools/. Và thông tin cho việc cài đặt Rtools có thể tìm thấy ở đây (nếu bạn đang sử dụng Windows): github.com/stan-dev/rstan/wiki/Install-Rtools-for-Windows

Khởi động R, sau đó cài đặt thư viện "httr" và "Rcpp" nếu bạn chưa có chúng.

Cài đặt "devtools" và trình cài đặt github tương ứng. Thông tin có thể được tìm thấy here, nhưng tôi sẽ cung cấp cho bạn một bản tóm tắt nhanh từ repo được liên kết.

Windows:

install.packages("devtools") 
library(devtools) 
build_github_devtools() 

#### Restart R before continuing #### 
install.packages("devtools.zip", repos = NULL, type = "source") 

# Remove the package after installation 
unlink("devtools.zip") 

Mac/Linux:

devtools::install_github("hadley/devtools") 

Bây giờ, để chạy những bước cuối cùng.

library(httr) 
library(Rcpp) 
library(devtools) 
install_github("hadley/rvest") 

Bây giờ bạn có thể chạy submit_form(session, form) và không gặp lỗi

Submitting with 'xxxx' 
Error: length(url) == 1 is not TRUE 
+1

Lưu ý: Rtools chỉ cần thiết trên Windows. Trên Mac & Linux, việc cài đặt gói phát triển là không đáng kể (đó là một lệnh, như được hiển thị trong câu trả lời của bạn). Trên thực tế, tôi đã không sử dụng CRAN trong độ tuổi, tôi cài đặt mọi thứ từ Github. –

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