使用R从网站下载文件不起作用

时间:2018-11-17 11:31:35

标签: r

我正在尝试使用R从https://www.bseindia.com/markets/equity/EQReports/MarketWatch.aspx下载.csv文件,但无法正常工作。

我正在发布屏幕快照,其中包含我要下载的文件的位置。

enter image description here

当我单击.csv文件的图像时,正在下载名称为“ MarketWatch_14_00_2018.csv”的文件

我的目标是将文件读入R,所以我使用了以下命令

MARKET_WATCH <- read.csv("MarketWatch_15_00_2018.csv", stringsAsFactors = F)

这工作正常,但是我想自动执行此过程,即直接从Web读取文件“ MarketWatch_15_00_2018.csv”,而无需手动单击并下载,因此我使用以下命令来完成此任务。

MARKET_WATCH_TEST <- read.csv("https://www.bseindia.com/markets/Equity/EQReports/MarketWatch.aspx?expandable=2/MarketWatch_17_00_2018.csv")

此命令没有给出错误,但是加载到数据框中的数据不正确,它有一些HTML代码已加载到数据框中

所以我尝试先下载文件,以便以后加载,我使用以下命令下载文件

downld <- getURL("https://www.bseindia.com/markets/Equity/EQReports/MarketWatch.aspx?expandable=2/MarketWatch_17_00_2018.csv? accessType=DOWNLOAD")

DATA <- read.csv (text = downld)

这次,我检查了数据是否在两个数据框中都复制了相同的HTML代码,即文件根本没有加载,只是将HTML文本加载到了数据框中

我尝试了其他几种方式,例如使用freadgetURL等,但没有一种有效。下面提到了我用于加载数据的代码。

dwnld <- fread("https://www.bseindia.com/markets/Equity/EQReports/MarketWatch.aspx?expandable=2/MarketWatch_17_00_2018.csv")

URL <- "https://www.bseindia.com/markets/equity/EQReports/MarketWatch.aspx/MarketWatch_17_00_2018.csv"

X <- getURL(URL)

有人可以帮助我理解为什么当我尝试直接从Web上直接下载文件时,为什么文件没有正确加载到R环境中的原因,因为将文件下载到本地桌面后可以正常加载。

1 个答案:

答案 0 :(得分:1)

怎么样?

library(dplyr)
library("rvest")
url <- "https://www.bseindia.com/markets/equity/EQReports/MarketWatch.aspx"
data <- url %>%
  read_html() %>%
  html_table(fill = TRUE)

df <- data[[9]]

df <- df[, -c(11:21)]

编辑:我确实看到该网页具有一些Java脚本链接:

__doPostBack('ctl00$ContentPlaceHolder1$grd1','Page$2')
__doPostBack('ctl00$ContentPlaceHolder1$grd1','Page$3')
__doPostBack('ctl00$ContentPlaceHolder1$grd1','Page$4')
...

在表格底部,我只导入了结果的第一页。