2016-03-21 8 views
0

Ich versuche, die Daten entsprechend Tabelle 5 auf den folgenden Link zu kratzen: 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.xlsScrape Website-Daten unter Verwendung rvest

Wie vorgeschlagen, habe ich SelectorGadget die entsprechende CSS-Spiel zu finden, und die, die ich fand alles, was enthalten ist die Daten (sowie einige Fremd Informationen) war „#page_content“

ich den folgenden Code habe versucht, die Ausbeute Fehler:

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. 

Jede Hilfe wäre sehr dankbar!

+1

Es hat eine Schaltfläche "Download Excel", die einfacher ist. – alistaire

+0

Ansonsten kann man mehr oder weniger die Tabelle mit 'fbi%>% read_html()%>% html_node ('table.data')%>% html_table (fill = TRUE)' bekommen, aber es ist nicht sehr hübsch. – alistaire

+0

@alistaire Ich stimme zu, dass das Herunterladen als Excel einfacher ist. Ich möchte jedoch, dass andere meine Arbeit schnell replizieren, indem sie einfach meine .R-Datei erstellen, ohne die Daten herunterladen zu müssen. – Zslice

Antwort

1

Sie können die Excel-Datei direkt herunterladen. Danach sollten Sie in die Excel-Datei schauen und die gewünschten Daten in eine CSV-Datei aufnehmen. Danach können Sie an den Daten arbeiten. Unten ist der Code für das Gleiche.

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

Die Daten sind nicht sehr formatiert. Daher wird das Herunterladen in R verwirrender sein. Für mich scheint dies der beste Weg, um Ihr Problem zu lösen.