這個簡單的代碼...
url1 <- 'https://www.sec.gov/Archives/edgar/data/0001336528/0001172661-21-001865.txt'
data1 <- readLines(url1)
...導致以下錯誤訊息:
<無法打開 URL 'https://www.sec.gov/Archives/edgar/data/0001336528/0001172661-21-001865.txt':HTTP 狀態為 '403 Forbidden' Error in file(con, "r") :無法打開連接另外:警告訊息:在檔案(con,“r”)中:>
我嘗試了很多方法,我得出的結論是,當我的請求來自 R(使用那個或任何代碼)時,該站點拒絕了我的請求。有時,我沒有出錯,代碼運行良好,但通常沒有。我總是可以直接從瀏覽器中保存 .txt(我無法使用 R 將它保存到我的電腦),然后從我電腦中的檔案匯入。
示例 -> 我將頁面另存為 .txt 然后
data1 <- readLines("Persh01.txt")
由于它有時作業,我還創建了一個回圈,嘗試直到完成,它完成了作業,但我更換了電腦,它似乎不再作業了。
data1 <- NA
data1 <- try(readLines(url1))
while (inherits(data1, "try-error")) {
data1 <- try(readLines(url1))
}
有人會幫助我嗎?謝謝
uj5u.com熱心網友回復:
在接受您的請求之前,您需要將幾個標頭傳遞給服務器。在這種情況下,您需要一個合適的User-Agent字串和 aConnection = "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檔案不允許從該站點的這一部分進行網路爬行和索引,因此您需要檢查您沒有違反該站點的使用政策。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/341160.html
