2016-03-22 3 views
0

Ich versuche, die untenstehende Webseite mit dem Rvest R-Paket zu kratzen. BBC Stock Market DataScrape BBC Stock Market Daten mit RVP-Paket in R

Ich bin auf der Suche nach der Europa/Afrika-Tabelle in einem Datenrahmen.

Mein Code ist im Moment:

stockmarket <- "http://www.bbc.co.uk/news/business/market_data/stockmarket/default.stm" 
stockmarket_html <- read_html(stockmarket) 
stockmarket_perf <- html_nodes(stockmarket_html, xpath = '//*[@id="marketdata_v4"]/table/tbody/tr[1]/td/table[6]/tbody') 
stockmarket_table <- html_table(stockmarket_perf) 

aber es funktioniert nicht. Genauer gesagt, wenn ich das stockmarket_html Dokument untersuchen scheint es, dass es kein HTML, sondern ein XML-Zeiger, der I:

  1. Weiß nicht, was es ist
  2. Sie wissen nicht, wie man in eine konvertieren R-Objekt

Jede Hilfe oder Richtung würde sehr geschätzt werden.

+1

Ihr Code ist gut, Ihr xpath gibt keine Ergebnisse zurück. – cory

+0

Interessant, weil ich den "Copy xpath" von Opera native "Inspect Element" -Funktion verwendet habe. Kann das falsch sein? – stratar

Antwort

1

Der Selektor, den Sie an html_nodes übergeben, wird nicht ausgewählt, was Sie wollen. Dieser spezielle Fall ist schwieriger als der Durchschnitt, da diese bestimmte Tabelle keine eigene Klasse oder ID besitzt. Trotzdem können wir es mit

library(rvest) 
stockmarket <- "http://www.bbc.co.uk/news/business/market_data/stockmarket/default.stm" 
stockmarket_html <- read_html(stockmarket) 
stockmarket_perf <- html_nodes(stockmarket_html, '#marketdata_v4 table') 
stockmarket_table <- html_table(stockmarket_perf[9], fill = TRUE) 

greifen, die für alle Tabellen in der marketdata_v4 sieht div, und dann den 9. zieht, die die ist, die Sie wollen.

Beachten Sie, dass die Daten immer noch ziemlich unordentlich sind und eine erhebliche Reinigung erfordern. Es gibt alternative Möglichkeiten, ähnliche Daten zu erhalten, wenn Sie möchten; Yahoo Finance hat eine sehr gut entwickelte API, daher gibt es mindestens ein paar Pakete, die direkt von diesem Programm stammen können, wenn Sie wissen, was Sie wollen. quantmod ist wahrscheinlich einen Blick wert, obwohl ich es nicht zum Ziehen von Indizes verwendet habe.