微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用R从网站查找所有csv链接

如何解决使用R从网站查找所有csv链接

我正在尝试从 ICE 网站 (https://www.theice.com/clear-us/risk-management#margin-rates) 下载包含保证金策略信息的数据文件。我试图通过在 R 中应用以下代码来做到这一点:

page <- read_html("https://www.theice.com/clear-us/risk-management#margin-rates")
raw_list <- page %>% # takes the page above for which we've read the html
html_nodes("a") %>%  # find all links in the page
html_attr("href") %>% # get the url for these links
str_subset("\\.csv") # find those that end in csv only

然而,它只找到两个 csv 文件。也就是说,当点击 Margin Rates 并转到 Historic ICE Risk Model Parameter 时,它不会检测到任何显示文件。见下文

raw_list
[1] "/publicdocs/iosco_reporting/haircut_history/icus/ICUS_Asset_Haircuts_History.csv"   
[2] "/publicdocs/iosco_reporting/haircut_history/icus/ICUS_Currency_Haircuts_History.csv"

我想知道如何做到这一点,以便稍后我可以选择文件并下载它们。

先谢谢了

解决方法

我们可以在浏览器 devtools 中查看网络流量,以找到每个下拉操作的 url。

Historic ICE Risk Model Parameter 下拉列表从此页面: https://www.theice.com/marginrates/ClearUSMarginParameterFiles.shtml;jsessionid=7945F3FE58331C88218978363BA8963C?getParameterFileTable&category=Historical

我们删除了 jsessionid(根据 QHarr 的评论)并将其用作我们的端点:

endpoint <- "https://www.theice.com/marginrates/ClearUSMarginParameterFiles.shtml?getParameterFileTable&category=Historical"
page <- read_html(endpoint)

然后我们就可以得到完整的csv列表:

raw_list <- page %>%
    html_nodes(".table-partitioned a") %>% # add specificity as QHarr suggests
    html_attr("href")

输出:

'/publicdocs/clear_us/irmParameters/ICUS_MARGIN_INTERMONTH_20210310.CSV'
'/publicdocs/clear_us/irmParameters/ICUS_MARGIN_INTERCONTRACT_20210310.CSV'
'/publicdocs/clear_us/irmParameters/ICUS_MARGIN_SCANNING_20210310.CSV'
'/publicdocs/clear_us/irmParameters/ICUS_MARGIN_STRATEGY_20210310.CSV'
'/publicdocs/clear_us/irmParameters/ICUS_MARGIN_INTERMONTH_20210226.CSV'
'/publicdocs/clear_us/irmParameters/ICUS_MARGIN_INTERCONTRACT_20210226.CSV'
'/publicdocs/clear_us/irmParameters/ICUS_MARGIN_SCANNING_20210226.CSV'
'/publicdocs/clear_us/irmParameters/ICUS_MARGIN_STRATEGY_20210226.CSV'
...
,

页面似乎没有立即加载页面的那部分内容,并且在您的请求中丢失了。网络监视器指示 400 毫秒后正在加载文件“ClearUSRiskArrayFiles.shtml”。一旦您在 URL 中指定年和月,该文件似乎会提供所需的链接。

library(rvest)
library(stringr)

page <- read_html("https://www.theice.com/iceriskmodel/ClearUSRiskArrayFiles.shtml?getRiskArrayTable=&type=icus&year=2021&month=03")

raw_list <- page %>% # takes the page above for which we've read the html
  html_nodes("a") %>%  # find all links in the page
  html_attr("href")

head(raw_list[grepl("csv",raw_list)],3L)
#> [1] "/publicdocs/irm_files/icus/2021/03/NYB0312E.csv.zip"
#> [2] "/publicdocs/irm_files/icus/2021/03/NYB0311E.csv.zip"
#> [3] "/publicdocs/irm_files/icus/2021/03/NYB0311F.csv.zip"

reprex package (v1.0.0) 于 2021 年 3 月 12 日创建

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。