SEC EDGAR 13F 源 HTTPError:HTTP 错误 403:禁止

IgB*_*ell 3 parsing beautifulsoup dataframe http-status-code-403 pandas

请帮忙,SEC EDGAR 以前一直工作得很好,直到现在。它给出 HTTPError: HTTP Error 403: Forbidden

import pandas as pd
tables = pd.read_html("https://www.sec.gov/Archives/edgar/data/1541617/000110465920125814/xslForm13F_X01/infotable.xml")
df=tables[3] 
df
Run Code Online (Sandbox Code Playgroud)

The*_*mis 7

该网站似乎拒绝了您的请求,因为它检测到该请求是自动执行的。如果将标头添加User-Agent: Mozilla/5.0到 http 请求中,则可以绕过此问题,因为这会使该请求看起来像是来自 Firefox 浏览器。不幸的是,pd.read_html 不支持更改请求标头,因此我们必须使用 requests 库自己发出请求。

安装请求pip install requests

然后将您的代码更改为如下所示:

import pandas as pd
import requests

# Makes a request to the url
request = requests.get("https://www.sec.gov/Archives/edgar/data/1541617/000110465920125814/xslForm13F_X01/infotable.xml", headers={"User-Agent": "Mozilla/5.0"})

# Pass the html response into read_html
tables = pd.read_html(request.text)

df = tables[3] 
print(df)
Run Code Online (Sandbox Code Playgroud)

我注意到该网站的一件事是它不允许来自非住宅 IP 地址的请求,并且总是会给你一个 403。因此,如果你在云中的某个地方(例如 repl.it,通过 VPN,或类似)此代码根本不起作用。不过,在我的家用计算机上运行该代码可以完美运行。该网站还表示,如果您每秒发出超过 10 个请求或总体请求量过多,它将阻止您的 IP 地址,因此请务必谨慎对待向网站发出请求的次数。