edgarWebR 1.1.0调用map函数执行filing_details时EDGAR请求被拦截如何解决
问题触发原因
edgarWebR 1.1.0版本适配了SEC最新的反爬规则,SEC要求所有自动化访问请求必须明确声明请求者身份,未配置身份标识的请求会被直接拦截,也就是报错中提到的「Undeclared Automated Tool」拦截逻辑。你看到的编码提示只是非阻塞警告,不会影响脚本运行,核心报错来源是未配置身份标识。
可直接使用的解决方案
- 首先配置请求身份环境变量,将下方代码替换为你的真实姓名和联系邮箱后,放在你脚本的最开头执行:
Sys.setenv(EDGARWEBR_USER_AGENT = "张三 zhangsan@example.com")
- 调整原有请求逻辑,添加请求间隔避免短时间高频触发限流,将你原来的map调用替换为如下代码:
library(purrr) map(filings_incl_href$href, ~{ # 每次请求间隔0.5秒,可根据你请求的文件量调整间隔时长 Sys.sleep(0.5) # 显式指定编码即可消除开头的编码提示 filing_details(.x, encoding = "UTF-8") })
- 如果单次需要爬取的13F文件量超过50份,建议每10次请求额外增加2-3秒等待时间,进一步降低被拦截的概率。
内容的提问来源于stack exchange,提问作者Webko Wuite
相关产品推荐
相关产品推荐

