1

感谢您阅读我的帖子。我有一个 pdf 文件的 url 列表。

for eachurl in url_list:
    print(eachurl)

以下是我的pdf的链接:

https://www.sec.gov/Archives/edgar/data/1005757/999999999715000035/filename1.pdf https://www.sec.gov/Archives/edgar/data/1037760/999999999715000162/filename1.pdf https:// www.sec.gov/Archives/edgar/data/1038133/999999999715000169/filename1.pdf https://www.sec.gov/Archives/edgar/data/1009626/999999999715000483/filename1.pdf https://www.sec. gov/Archives/edgar/data/1017491/999999999715000518/filename1.pdf https://www.sec.gov/Archives/edgar/data/1020214/999999999715000557/filename1.pdf https://www.sec.gov/Archives/埃德加/数据/1020214/999999999715000795/filename1.pdf

如果我手动单击它们并下载 pdf 文件,这七个链接可以完美运行。但是,如果我使用 python 代码下载它们,就会发生随机错误。有时,第一个 pdf 已损坏且无法打开。有时。它是第二个,或第三个,等等......

from pathlib import Path
import requests
n_files = 0
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169'}
for eachurl in url_list:
    n_files += 1
    response = requests.get(eachurl, headers=headers)
    filename = Path(str(n_files) + '.pdf')
    filename.write_bytes(response.content)

你能帮我理解为什么会这样吗?


更新:我将这些文件上传到谷歌驱动器,最后发现这是因为 SEC 将我识别为机器人。我已经添加了标题。知道如何绕过这个吗? 谷歌云端硬盘

4

1 回答 1

2

您的代码没有任何问题。只是您从中下载 pdf 文档的网站检测到您正在使用自动化工具,而不是像通常那样为您提供 pdf,而是返回一个 html 页面,通知您上述内容。

您的请求来自未声明的自动化工具

为了让所有用户都能公平访问,SEC 保留限制来自未声明的自动化工具的请求的权利。您的请求已被识别为可接受策略之外的自动化工具网络的一部分,并且将受到管理,直到采取行动声明您的流量。

请通过更新您的用户代理以包含公司特定信息来声明您的流量。

有关从 SEC.gov 有效下载信息的最佳实践,包括最新的 EDGAR 文件,请访问 sec.gov/developer。您还可以注册 SEC 开放数据计划的电子邮件更新,包括提高数据下载效率的最佳实践,以及可能影响脚本下载过程的 SEC.gov 增强功能。如需更多信息,请联系 opendata@sec.gov。

如需更多信息,请参阅 SEC 的网站隐私和安全政策。感谢您对美国证券交易委员会的关注。

参考编号:0.2420b07b.1629818487.2ac196c

更多信息

互联网安全政策

使用本网站,即表示您同意安全监控和审计。出于安全目的,并确保公共服务仍然可供用户使用,该政府计算机系统采用程序来监控网络流量,以识别未经授权的上传或更改信息或以其他方式造成损害的企图,包括拒绝向用户提供服务的企图。

未经授权尝试在本网站的任何部分上载信息和/或更改信息是严格禁止的,并会根据 1986 年的《计算机欺诈和滥用法》和 1996 年的《国家信息基础设施保护法》受到起诉(参见 Title 18 USC §§ 1001和 1030)。

为确保我们的网站对所有用户都能正常运行,SEC 监控对 SEC.gov 内容的请求频率,以确保自动搜索不会影响其他人访问 SEC.gov 内容的能力。我们保留阻止提交过多请求的 IP 地址的权利。当前的指导方针将用户的请求总数限制为每秒不超过 10 个请求,无论用于提交请求的机器数量如何。

如果用户或应用程序每秒提交超过 10 个请求,则来自 IP 地址的进一步请求可能会在短时间内受到限制。一旦请求率下降到阈值以下 10 分钟,用户就可以继续访问 SEC.gov 上的内容。SEC 的这一做法旨在限制对 SEC.gov 的过度自动搜索,无意或预期会影响浏览 SEC.gov 网站的个人。

请注意,随着 SEC 管理 SEC.gov,此政策可能会发生变化,以确保网站高效运行并始终可供所有用户使用。


注意:我们不为开发或调试脚本下载过程提供技术支持。

解决方案

删除标题,之后似乎工作正常。

于 2021-08-24T15:31:41.393 回答