使用R

时间:2016-03-22 20:11:44

标签: xml r pointers web-scraping rvest

我正在尝试使用rvest R软件包刮掉下面的网页。 BBC Stock Market Data

我希望在数据框中检索欧洲/非洲表。

目前我的代码是:

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)

但它不起作用。 更具体地说,当我检查stockmarket_html文档时,似乎它不是HTML而是XML指针,我:

  1. 不知道它是什么
  2. 不知道如何转换为R对象
  3. 非常感谢任何帮助或指示。

1 个答案:

答案 0 :(得分:1)

您传递给html_nodes的选择器不会选择您想要的内容。这种特殊情况比平均情况更难,因为该特定表格没有自己的类别或ID。不过,我们可以用

抓住它
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)

查找marketdata_v4 div中的所有表格,然后拉出第9个,这就是你想要的那个。

请注意,数据仍然非常混乱,需要进行大量清理。如果您愿意,还有其他方法可以获得类似的数据;雅虎财经有一个非常完整的API,所以如果你知道你想要什么,至少有几个包可以直接从中获取。 quantmod可能值得一看,虽然我还没有专门用它来提取指数。