【发布时间】:2020-03-30 21:40:42
【问题描述】:
我正在尝试通过单击此site(位于图表左侧下方)上的“CSV”按钮生成 csv。问题是 CSV 是从解析嵌入表的 Javascript 生成的(图表中间下方)。我知道我可以只刮嵌入式表。我不想这样做。
我想要一个使用 R 从“CSV”按钮下载 csv 的解决方案。到目前为止,我的尝试使用 r 包“rvest”和“V8”。我只是对自己的工作感到困惑,因为我找不到用于 javascript 下载按钮的 V8 包的好例子。这是我到目前为止所得到的。
我对 ct
library(rvest)
library(V8)
URL <- https://www.bankofengland.co.uk/boeapps/database/fromshowcolumns.asp?Travel=NIxSTxTIxSUx&FromSeries=1&ToSeries=50&DAT=RNG&FD=1&FM=Jan&FY=2009&TD=30&TM=Mar&TY=2020&FNY=&CSVF=TT&html.x=91&html.y=29&C=IIN&Filter=N#
raw_html <- GET(URL) %>%
content() %>%
rvest::html_nodes("script") %>%
html_text()
ct <- v8()
read_html(ct$eval(gsub('document.ready','',raw_html))) %>%
html_text()
对于上下文,按钮的javascript如下
<script>
$(document).ready(function() {
$.fn.dataTable.moment( 'DD MMM YY' );
$('#stats-table').DataTable( {
paging: false,
"info": false,
"order": [ 0, 'desc' ],
fixedHeader: {
header: true
},
dom: 'Bfrtip',
buttons: [
'copy', 'csv', 'excel', 'print'
]
} );
} );
</script>
【问题讨论】:
-
直接使用v8非常困难。可以用节点吗?
-
非常感谢您的评论。我可以使用任何 CRAN 包,但恐怕我只能使用 R。你知道使用 R 的解决方案吗?谢谢
-
"我只能使用 R" v8 不是 R,它的 C++
-
它也是R中的一个包。我试图参考V8 R包。如果之前不清楚,我很抱歉。我已经编辑了问题以尝试更好地反映这一点。
标签: r web-scraping v8 rvest rselenium