无法访问 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”-的主要内容,如果未能解决你的问题,请参考以下文章

Web 应用程序项目 Himall.Web 已配置为使用 IIS。 无法访问 IIS 元数据库

Windows8 Web应用程序项目 已配置为使用IIS 无法访问IIS元数据库,您没有足够的特权访问计算机上的II

无法访问部署在远程JBoss上的Web应用程序

部署在 github.pages 上的 Flutter Web 应用程序无法访问某些资产

无法从本地网络上的 Web 服务器访问 localhost

我无法从 Windows 托管的 Web API 上的 IIS 访问 wkhtmltopdf