2016-05-09 9 views
0

In this url string, „toDate = 1399849199999“ Teil der Zeichenfolge bezieht sich auf UNIX Zeit in Millisekunden angegeben, welche die Premier Tabelle für einen bestimmten zu extrahieren verwendet wird Tag.Extrahierung aller (möglichen) optional Datumswerte von Web-Seite [R]

In diesem Fall bezieht sich UNIX-Zeit bis 11 kann von 2014.

as.POSIXlt (1399849199999/1000, tz = "GMT", origin = "1970-01-01") 

ich alle möglichen Werte UNIX Zeit für einen bestimmten Monat abrufen möchten. Für url hier zur Verfügung gestellt, werden diese 6-Werte in die Homepage Quellcode gespeichert und es sieht wie folgt aus:

<select name="toDate" id="date" class="selectToSlider" widget="selectToSlider" labels="18" tooltip="false" wrapperClass="selectToSliderWrapper selectToSliderMatchDate"><optgroup label="results"><option value="1399157999999">SAT 03</option><option value="1399244399999">SUN 04</option><option value="1399330799999">MON 05</option><option value="1399417199999" selected="selected">TUE 06</option><option value="1399503599999">WED 07</option><option value="1399849199999">SUN 11</option></optgroup><optgroup label="fixtures"></optgroup></select> 

Früher verwendete ich solche Informationen mit regulären Ausdrücken zu extrahieren, aber es war der Schmerz im Hals (** *) und ich möchte das auf eine einfachere Weise tun.

Ich schätze es, wenn jemand den Code (möglicherweise mit erklärten Schritten) zur Verfügung stellen kann, die diese Werte mit einigen Web Scraping-Paketen in R extrahieren kann, vorzugsweise XML. Ich habe es selbst versucht, aber ich war erfolglos ...

Antwort

1

Wir versuchen, XML-Paket verwenden, können zu analysieren extrahieren Sie die HTML aus dem Link, den Sie zur Verfügung gestellt, dann die spezifischen Informationen erforderlich (aus dem ganzen html) XPath:

library(XML) 
EPL.URL <- "http://www.premierleague.com/en-gb/matchday/league-table.html?season=2013-2014&month=MAY&timelineView=date&toDate=1399849199999&tableView=CURRENT_STANDINGS" 
EPL.doc <- htmlParse(EPL.URL) 
xpathSApply(EPLdoc, "//optgroup[@label='results']/option", xmlGetAttr, "value") 
+0

Bitte erläutern Sie, was "// optgroup [@ label = 'results']/option" bedeutet? –

+1

XPATH ist eine Methode zum Extrahieren von Informationen aus XML-Knoten. Hier müssen wir auf alle _option_-Knoten zugreifen, die die untergeordneten Elemente des Knotens optgroup_ sind, mit dem Attribut _label = "results" _. Ich denke, dass die Verwendung von '" // option "' Pfad uns mehr als nötig geben wird. Weitere Informationen finden Sie unter: http://www.w3schools.com/xsl/xpath_syntax.asp; https://www.w3.org/TR/xpath/; https://msdn.microsoft.com/en-us/library/ms256086(v=vs.110).aspx – zyurnaidi

1

rvest macht das ziemlich einfach. Suchen Sie nach den "Option" -Knoten, dann greifen Sie auf die "Wert" -Attribute.

library("rvest") 
h <- read_html('<select name="toDate" id="date" class="selectToSlider" widget="selectToSlider" labels="18" tooltip="false" wrapperClass="selectToSliderWrapper selectToSliderMatchDate"><optgroup label="results"><option value="1399157999999">SAT 03</option><option value="1399244399999">SUN 04</option><option value="1399330799999">MON 05</option><option value="1399417199999" selected="selected">TUE 06</option><option value="1399503599999">WED 07</option><option value="1399849199999">SUN 11</option></optgroup><optgroup label="fixtures"></optgroup></select>') 
h %>% html_nodes("option") %>% html_attr("value") 
[1] "1399157999999" "1399244399999" "1399330799999" 
[4] "1399417199999" "1399503599999" "1399849199999" 
+0

Wie das funktioniert, wenn h wäre eine URL-Zeichenfolge anstelle eines Teils des Webseiten-Quellcodes? –

Verwandte Themen