2017-10-20 2 views
0

내가 긁어에 새로운 오전 및 제 작업에 나는이 웹 페이지 긁어하기로 결정 : 내가 긁어하고자하는 숫자 정보를 포함하는 목록이 페이지에 https://finstat.sk/databaza-financnych-udajov?EmployeeExact=False&RpvsInsert=False&Sort=assets&PerPage=20R 긁어 XPath는

낮은합니다. 그걸 도와 주실 래요? 나는이 코드를 시도했다. 나는이를 실행 한 후

library('rvest') 


url <- 'https://finstat.sk/databaza-financnych-udajov?EmployeeExact=False&RpvsInsert=False&Sort=assets&PerPage=20' 

webpage <- read_html(url) 

tabulka <- html_nodes(webpage, xpath='/html/body/div[5]/div/div[3]/div[4]/div[2]/div/div/div[3]/table/tbody/tr[1]') %>% 
    html_table() %>% 

head(tabulka) 

나는 오류 얻을 : 길이 == 1L는 사실이 아니다 (N)를

Output needed

+1

대 예. 당신은 또한 당신이 출력물로 기대했던 것을 보여줄 수 있었습니까? – Bobby

+0

오류를 게시하지 않아서 죄송합니다. 이것은 내가 얻은 것입니다 : length (n) == 1L은 TRUE가 아닙니다. 나는 편집 한 웹 사이트의 정보를 적어도 50 페이지 이상 받고 싶습니다. – Tomas

+0

추가 정보를 포함하도록 질문을 수정하십시오. 오류 등에 대해서. – QHarr

답변

1

어쩌면이 : 당신이 코드를 가지고

library(rvest) 
library(tidyverse) 

scrape_data <- function(x) { 
    page <- read_html(sprintf("https://finstat.sk/databaza-financnych-udajov?EmployeeExact=False&RpvsInsert=False&Sort=assets&Page=%s", x)) 
    first_two_cols <- lapply(c("td.data-table-column-pinned", "td.hidden-xs"), function(x) page %>% html_nodes(x) %>% html_text(trim = T)) %>% data.frame() 
    remaining_cols <- lapply(3:7, function(x) page %>% html_nodes(sprintf(".nowrap:nth-child(%s)",x)) %>% html_text(trim = T)) %>% data.frame() 
    cbind(first_two_cols, remaining_cols) %>% set_names(paste0("var", 1:7)) 
} 

#The following scrapes 5 pages, but the number can be adjusted: 
df <- map_df(1:5, scrape_data) 
+0

고마워. 나는 이것을 더 조정하려고 노력할 것이다. 도와 주셔서 감사합니다. – Tomas