使用R从javascript下载按钮获取网页抓取数据

时间:2020-03-30 21:40:42

标签: r web-scraping v8 rvest rselenium

我正在尝试通过网络抓取通过单击此site(位于图表左侧下方)上的“ CSV”按钮生成的csv。问题是CSV是由Javascript生成的,该Javascript解析嵌入的表格(在图表的下方)。我知道我只能刮擦嵌入式桌子。我不想这样做。

我想要一个使用R从“ CSV”按钮下载csv的解决方案。到目前为止,我尝试使用r包“ rvest”和“ V8”。我只是对自己的工作感到困惑,因为我找不到在JavaScript下载按钮上使用的V8软件包的良好示例。这就是我到目前为止所得到的。

我对ct <-v8()之前的行感到困惑...如何在上述URL的源代码中的javascript上下文中应用V8软件包?

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>

0 个答案:

没有答案