【发布时间】:2019-07-08 07:32:20
【问题描述】:
当我在本练习中探索了 2 种方法时,我的问题有 2 个部分,但是我没有成功。如果有人可以帮助我,将不胜感激。
[第 1 部分:]
我正在尝试从新加坡证券交易所https://www2.sgx.com/derivatives/negotiated-large-trade 的网页中抓取数据,其中包含存储在表格中的数据。我有一些使用(rvest)抓取数据的基本知识。但是,在 chrome 上使用 Inspector,html 层次结构比我预期的要复杂得多。我可以看到我想要的数据隐藏在
library(rvest)
library(httr)
library(XML)
SGXurl <- "https://www2.sgx.com/derivatives/negotiated-large-trade"
SGXdata <- read_html(SGXurl, stringsASfactors = FALSE)
html_nodes(SGXdata,".table-container")
但是,代码没有发现任何内容,我怀疑我是否正确使用了这些代码。
[第 2 部分:]
我意识到页面上有一个小的“下载”按钮,可以准确地下载我想要的 .csv 格式的数据文件。所以我想写一些代码来模仿下载按钮,我发现了这个问题Using R to "click" a download file button on a webpage,但我无法通过对该代码进行一些修改来让它工作。
网页上有一些过滤器,主要是我有兴趣下载特定工作日的数据,而其他过滤器留空,所以我尝试编写以下函数:
library(httr)
library(rvest)
library(purrr)
library(dplyr)
crawlSGXdata = function(date){
POST("https://www2.sgx.com/derivatives/negotiated-large-trade",
body = NULL
encode = "form",
write_disk("SGXdata.csv")) -> resfile
res = read.csv(resfile)
return(res)
}
我打算将函数输入“date”放入“body”参数中,但是我无法弄清楚如何做到这一点,所以我从“body = NULL”开始,假设它不这样做任何过滤。然而,结果仍然不尽如人意。文件下载基本为空,报如下错误:
Request Rejected
The requested URL was rejected. Please consult with your administrator.
Your support ID is: 16783946804070790400
【问题讨论】:
标签: r post web-scraping httr rselenium