2016-06-05 3 views
0

Ich versuche, Daten von dieser Seite zu kratzen:Scrape Daten aus dem Flash-Seite mit rvest

http://www.atpworldtour.com/en/tournaments/brisbane-international-presented-by-suncorp/339/2016/match-stats/r975/f324/match-stats?

Wenn ich versuche, den Namen der Spieler zu kratzen die CSS-Selektor und die übliche rvest Syntax:

names <- read_html("http://www.atpworldtour.com/en/tournaments/brisbane-international-presented-by-suncorp/339/2016/match-stats/r975/f324/match-stats?") %>% 
html_nodes(".scoring-player-name") %>% sapply(html_text) 

alles gut geht.

Leider, wenn ich versuche, die Statistiken unten zu kratzen (zuerst dienen Punkte gewonnen, ..) mit dem Selektor .stat-breakdown span Ich kann keine Daten abrufen.

Ich weiß, rvest wird im Allgemeinen nicht empfohlen, Seiten dynamisch erstellt zu kratzen, aber ich verstehe nicht, warum einige Daten geschabt werden und einige nicht.

+0

wie Daten Sieht Sie suchen ist in JSON-Objekt innerhalb dieses Tags "// Skript [@ id = 'matchStatsData']" und Auf Anfrage wird es in die Tabelle geladen. Es gibt natürlich Möglichkeiten, mit Regex zu spielen, aber es ist chaotisch. –

+0

Kein Weg es zu tun (vielleicht mit Rselenium)? Ich bin bereit, Zeit zu verbringen – adaien

Antwort

1

Ich benutze nicht Rvest. Wenn Sie dem folgenden Code folgen, sollten Sie zu dem Format gelangen, das im Bild eine Zeichenfolge ist, die Sie basierend auf Trennzeichen in ein Dataform transformieren können:,.

Dieses Tag enthält auch mehr Informationen als es in der Benutzeroberfläche der Webseite angezeigt wurde. Ich kann auch RSelenium versuchen, muss aber meinen anderen PC bekommen. Also würde ich dich wissen lassen, ob RSelenium für mich funktioniert hat.

library(XML) 
library(RCurl) 
library(stringr) 

url<-"http://www.atpworldtour.com/en/tournaments/brisbane-international-presented-by-suncorp/339/2016/match-stats/r975/f324/match-stats?" 
url2<-getURL(url) 
parsed<-htmlParse(url2) 
# get messi data from tag 
step1<-xpathSApply(parsed,"//script[@id='matchStatsData']",xmlValue) 
# removing some unwanted characters 
step2<-str_replace_all(step1,"\r\n","") 
step3<-str_replace_all(step2,"\t","") 
step4<-str_replace_all(step3,"[[{}]\"]","") 

Output dann ist eine Zeichenfolge, wie diese

enter image description here

+0

Danke! Ich konnte die benötigten Informationen extrahieren. Nur eine letzte Sache, ich würde gerne mit dem Kratzen vertrauter werden, können Sie mich zu einem Leitfaden umleiten, wie Sie diese Informationen extrahiert haben (oder zumindest kann das für diese Zwecke nützlich sein)? – adaien

+0

Gern geschehen. Als eine Quelle für das Lernen über das Thema fand ich im Internet ein Buch Automatisierte Datenerfassung mit R, die sehr umfassend und wirklich große Ressource ist. Andernfalls, wenn es mir nicht gelingt, Daten basierend auf Inspektionselementen zu erhalten, gehe ich in den Chrome-Entwicklertools zur Registerkarte Netzwerk und suche unter XHR nach einem DOC nach Dateien, die Daten enthalten können. Oft gibt es vielleicht eine URL, die auf diese Dateien zeigt oder Daten sind in der Vorschau enthalten .................... schwer zu definieren, wie genau das geht –

+0

Keine Sorge, ich weiß, dass es kein Rezept gibt, aber das Buch ist was ich gesucht habe – adaien