我在试着爬https://www.nyse.com/bell/calendar。由于某种原因,当我拉出html时,它返回到一个不同的html,当我使用查看该html时,可以找到这个html。我使用了以下功能:
SetDir = "~/NYSE/"
setwd(SetDir)
CreateDir = paste(SetDir, "RawData/", sep="")
if("RawData" %in% dir(SetDir)==FALSE){
dir.create(CreateDir)
}
url = paste("https://www.nyse.com/bell/calendar", sep="")
urlname <- paste(CreateDir, ".html", sep="")
err <- try(download.file(url,destfile = urlname, quiet=FALSE), silent=TRUE)
if(class(err)=="try-error"){
Sys.sleep(5)
try(download.file(url,destfile = urlname, quiet=FALSE), silent=TRUE)
}在上面的命令之后,我得到了以下警告消息:
Warning message:
In download.file(url, destfile = urlname, method = "internal", mode = "w", :
downloaded length 18598 != reported length 200我甚至使用包(如RCurl)尝试了非常简单的函数:
script <- readLines("https://www.nyse.com/bell/calendar")
script <- getURL("https://www.nyse.com/bell/calendar")我没有得到一个错误,只是相同的HTML我得到了之前,这是不一样的时候,在网站上检查。由于某些原因,它似乎没有检索我正在寻找的html。当我尝试其他站点时,这些方法都有效。我有点不知所措,这是怎么回事,这个具体的网站是否受到保护?
谢谢。
发布于 2022-09-24 16:14:33
您可以考虑在R包RSelenium中使用Selenium:
library(RSelenium)
url <- "https://www.nyse.com/bell/calendar"
shell('docker run -d -p 4445:4444 selenium/standalone-firefox')
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4445L, browserName = "firefox")
remDr$open()
remDr$navigate(url)
html_Content <- remDr$getPageSource()[[1]]https://stackoverflow.com/questions/32419114
复制相似问题