我想从SEC EDGAR API中提取报告并在python中进行分析。据我所知,看起来主要问题是我使用了错误的文件格式,但我发现转换为HTML的方法不起作用。
我在python方面的经验有限,使用RESTful API的经验更少。我在美国证券交易委员会的网站上找到了一些API的资源,但我不能理解它的意义。
我也尝试将响应打印到数据帧中,但我得到了403响应
这是我的代码:
import requests
import pandas as pd
import numpy as np
ticker = "AAPL"
start_date = "2022-01-01"
end_date = "2020-12-31"
sec_url = "https://www.sec.gov/cgi-bin/browse-edgar"
sec_params = {
"action": "getcompany",
"CIK": ticker,
"type": "10-k",
"dateb": start_date,
"owner": "exclude",
"count": 100
}
sec_response = requests.get(sec_url, params=sec_params)
sec_data = sec_response.json()
我收到的错误是JSONDecodeError
问题是返回的响应不是JSON,它是一个包含错误的HTML页面。(您可以使用sec_response.text
检查返回的响应)。
在你的情况下,SEC要求你在请求的USER-AGENT中包括你的公司/电子邮件。(看到)
USER-AGENT应该包含在请求的头中。查看如何检查这个StackOverflow问题:
...
headers = {
'User-Agent': 'Sample Company Name AdminContact@<sample company domain>.com'
}
...
sec_response = requests.get(sec_url, params=sec_params, headers=headers)