我正试图从雅虎财经网站中提取the table of historical data。
首先,通过检查源代码,我发现它实际上是一个表,所以我怀疑来自rvest
的{{1}}应该可以使用它,但是,我找不到一种从R到达它的方法。我尝试只提供完整页面的功能,但是,它没有获取正确的表格:
url <- https://finance.yahoo.com/quote/^FTSE/history?period1=946684800&period2=1470441600&interval=1mo&filter=history&frequency=1mo
read_html(url) %>% html_table(fill = TRUE)
# Returns only:
# [[1]]
# X1 X2
# 1 Show all results for Tip: Use comma to separate multiple quotes Search
其次,我找到了特定表的xpath选择器,但是我仍然没有成功获取数据:
xpath1 <- '//*[@id="main-0-Quote-Proxy"]/section/div[2]/section/div/section/div[3]/table'
read_html(url) %>% html_node(xpath = xpath1)
# Returns an empty nodeset:
# {xml_nodeset (0)}
通过从选择器中删除最后一个术语,我得到一个非空的节点集,但仍然没有表:
xpath2 <- '//*[@id="main-0-Quote-Proxy"]/section/div[2]/section/div/section/div[3]'
read_html(url) %>% html_node(xpath = xpath2) %>% html_table(fill = TRUE)
# Error: html_name(x) == "table" is not TRUE
我做错了什么?任何帮助将不胜感激!
编辑:我发现最后一个xpath的html_text()
返回
read_html(url) %>% html_node(xpath = xpath2) %>% html_text()
[1] "Loading..."
表示当R执行读取时表尚未加载。这可以解释为什么它没有看到表格。问题:绕过加载文本的任何方法?