【问题标题】:using R to web scrape data from javascripted download button使用 R 从 javascripted 下载按钮中抓取数据
【发布时间】: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


【解决方案1】:

RSelenium 解决方案,

library(RSelenium)
driver = rsDriver(browser = c("firefox"))

remDr <- driver[["client"]]
# Naigate to website
remDr$navigate("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#")
#Download the CSV file
button_element <- remDr$findElement(using = 'xpath', value = '//*[@id="stats-table_wrapper"]/div[1]/a[2]')
button_element$clickElement()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 2022-12-18
    • 1970-01-01
    相关资源
    最近更新 更多