2016-03-21 2 views
0

Я пытаюсь скрести данные, соответствующие таблицы 5 по следующей ссылке: https://www.fbi.gov/about-us/cjis/ucr/crime-in-the-u.s/2013/crime-in-the-u.s.-2013/tables/5tabledatadecpdf/table_5_crime_in_the_united_states_by_state_2013.xlsскоблить данных веб-сайтов с использованием rvest

Как было предложено, я SelectorGadget найти соответствующий матч CSS, и один я обнаружил, что содержал все данные (а также некоторые посторонняя информация) была «#page_content»

Я попытался следующий код, который выход ошибки:

fbi <- read_html("https://www.fbi.gov/about-us/cjis/ucr/crime-in-the-u.s/2013/crime-in-the-u.s.-2013/tables/5tabledatadecpdf/table_5_crime_in_the_united_states_by_state_2013.xls") 

fbi %>% 
html_node("#page_content") %>% 
html_table() 
Error: html_name(x) == "table" is not TRUE 

#Try extracting only the first column: 
fbi %>% 
html_nodes(".group0") %>% 
html_table() 
Error: html_name(x) == "table" is not TRUE 

#Directly feed fbi into html_table 
data = fbi %>% html_table(fill = T) 
#This output creates a list of 3 elements, where within list 1 and 3, there are many missing values. 

Любая помощь будет принята с благодарностью!

+1

У этого есть кнопка «Загрузить Excel», которая проще. – alistaire

+0

В противном случае вы можете получить более или менее таблицу с 'fbi%>% read_html()%>% html_node ('table.data')%>% html_table (fill = TRUE)', но это не очень красиво. – alistaire

+0

@alistaire Я согласен с тем, что загрузка как excel проще. Тем не менее, я хотел бы, чтобы другие быстро реплицировали мою работу, просто используя мой .R-файл, не загружая данные. – Zslice

ответ

1

Вы можете скачать файл excel напрямую. После этого вы должны посмотреть в файл excel и взять данные, которые вы хотите, в файл csv. После этого вы сможете работать с данными. Ниже приведен код для этого.

library(rvest) 
library(stringr) 
page <- read_html("https://www.fbi.gov/about-us/cjis/ucr/crime-in-the-u.s/2013/crime-in-the-u.s.-2013/tables/5tabledatadecpdf/table_5_crime_in_the_united_states_by_state_2013.xls") 


pageAdd <- page %>% 
    html_nodes("a") %>%  # find all links 
    html_attr("href") %>%  # get the url 
    str_subset("\\.xls") %>% # find those that end in xls 
    .[[1]]  
mydestfile <- "D:/Kumar/table5.xls" # change the path and file name as per your system 
download.file(pageAdd, mydestfile, mode="wb") 

Данные не в очень отформатированном виде. Следовательно, загрузка его в R будет более запутанной. Для меня это, кажется, лучший способ решить вашу проблему.

Смежные вопросы