无法访问 Web 上的数据 -URL HTTP 状态为“403 Forbidden”-

Posted

技术标签:

【中文标题】无法访问 Web 上的数据 -URL HTTP 状态为“403 Forbidden”-【英文标题】:Can not access data on web -URL HTTP status was '403 Forbidden'- 【发布时间】:2021-12-12 03:40:57 【问题描述】:

这个简单的代码...

url1 <- 'https://www.sec.gov/Archives/edgar/data/0001336528/0001172661-21-001865.txt'
data1 <- readLines(url1)

...导致以下错误消息:

我尝试了很多方法,我得出的结论是,当我的请求是由 R(使用该代码或任何代码)发出时,该站点拒绝了我的请求。有时,我没有出错,代码运行良好,但通常没有。我总是可以直接从浏览器保存 .txt(我无法使用 R 将其保存到我的电脑),然后从我的电脑中的文件导入。

示例 -> 我将页面另存为 .txt,然后

data1 <- readLines("Persh01.txt")

由于它有时会工作,我还创建了一个循环尝试直到完成,它完成了工作,但我更换了电脑,它似乎不再工作了。

data1 <- NA
data1 <- try(readLines(url1))
while (inherits(data1, "try-error")) 
  data1 <- try(readLines(url1))

有人会帮助我吗? 谢谢

【问题讨论】:

【参考方案1】:

您需要在服务器接受您的请求之前将几个标头传递给服务器。在这种情况下,您需要一个合适的User-Agent 字符串和一个Connection = "keep alive" 来防止403 错误。

library(httr)

url1 <- 'https://www.sec.gov/Archives/edgar/data/0001336528/0001172661-21-001865.txt'
UA <- "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0"

res   <- GET(url1, add_headers(`Connection` = "keep-alive", `User-Agent` = UA))
data1 <- strsplit(content(res), "\n")[[1]]

head(data1, 10) 

#>  [1] "<SEC-DOCUMENT>0001172661-21-001865.txt : 20210816"   
#>  [2] "<SEC-HEADER>0001172661-21-001865.hdr.sgml : 20210816"
#>  [3] "<ACCEPTANCE-DATETIME>20210816163055"                 
#>  [4] "ACCESSION NUMBER:\t\t0001172661-21-001865"             
#>  [5] "CONFORMED SUBMISSION TYPE:\t13F-HR"                   
#>  [6] "PUBLIC DOCUMENT COUNT:\t\t2"                           
#>  [7] "CONFORMED PERIOD OF REPORT:\t20210630"                
#>  [8] "FILED AS OF DATE:\t\t20210816"                         
#>  [9] "DATE AS OF CHANGE:\t\t20210816"                        
#> [10] "EFFECTIVENESS DATE:\t\t20210816" 

请注意,该网站的 robot.txt 文件不允许从该网站的这一部分进行网络抓取和索引,因此您需要检查您是否违反了该网站的使用政策。

【讨论】:

非常感谢。这是格栅。仅供参考,该网站似乎允许它:#SEC Allow: /Archives/edgar/data Disallow: /Archives/bin Disallow: /Archives/etc Disallow: /Archives/usr Disallow: /cgi-bin禁用:/bin 禁用:/Archives/edgar/vprr/XXXX 禁用:/Archives/edgar/vprr/vprr_removal 禁用:/Archives/edgar/vprr/bin 禁用:/nb 禁用:/video/live 禁用:/Archives/edgar /data/1473971/000109181814000042/ex101002.gif 禁止:/node 禁止:/spotlight/equity-market-structure-advisory-committee.shtml

以上是关于无法访问 Web 上的数据 -URL HTTP 状态为“403 Forbidden”-的主要内容,如果未能解决你的问题,请参考以下文章