2017-09-04 13 views
0

Ich lerne, wie Informationen von Websites mit httr und XML in R zu kratzen. Ich bekomme es gut für Websites mit nur ein paar Tabellen, aber ich kann es nicht verstehen für Websites mit mehreren Tabellen. Unter Verwendung der folgenden Seite von pro-Fußball-Referenz als Beispiel: https://www.pro-football-reference.com/boxscores/201609110atl.htmR: Mehrere Tabellen in URL scrapping

# To get just the boxscore by quarter, which is the first table: 
URL = "https://www.pro-football-reference.com/boxscores/201609080den.htm" 
URL = GET(URL) 
SnapTable = readHTMLTable(rawToChar(URL$content), stringAsFactors=F)[[1]] 

# Return the number of tables: 
AllTables = readHTMLTable(rawToChar(URL$content), stringAsFactors=F) 
length(AllTables) 
[1] 2 

So info ich bin in der Lage zu kratzen, aber aus irgendeinem Grund erfassen kann ich nur die oberen zwei Tabellen aus dem 20+ auf die Seite. Zum Üben versuche ich die "Starters" -Tabellen und die "Officials" -Tabellen zu bekommen.

Ist meine Unfähigkeit, die anderen Tabellen zu bekommen, eine Frage der Einrichtung der Website oder des falschen Codes?

Antwort

0

Wenn es darum geht, Web Scraping in R kommt intensive Nutzung des Pakets rvest.

Während es gelingt, das HTML zu bekommen, ist nur über feine - rvest macht Gebrauch von Css-Selektoren - SelectorGadget hilft, ein Muster im Styling für einen bestimmten Tisch zu finden, der hoffentlich einzigartig ist. Daher können Sie genau die Tabellen extrahieren, die Sie anstelle von Zufall suchen.

Um loszulegen - lesen Sie die Vignette auf RVST für weitere Informationen.

#install.packages("rvest") 
library(rvest) 
library(magrittr) 

# Store web url 
fb_url = "https://www.pro-football-reference.com/boxscores/201609080den.htm" 

linescore = fb_url %>% 
    read_html() %>% 
    html_node(xpath = '//*[@id="content"]/div[3]/table') %>% 
    html_table() 

Hoffe das hilft.