【发布时间】:2021-03-20 18:06:30
【问题描述】:
我正在考虑为任何使用 Beautiful Soup 的公司自动并妥善组织资产负债表数据。
我不打算获取每个变量,而是获取整个资产负债表。最初,我尝试编写许多代码来提取我选择的特定公司的 URL。
例如,假设我想从以下 URL 获取资产负债表数据:
URL1:'https://www.sec.gov/Archives/edgar/data/1418121/000118518520000213/aple20191231_10k.htm'
或来自
URL2:'https://www.sec.gov/Archives/edgar/data/1326801/000132680120000046/form8-k03312020earnings.htm'
我正在尝试编写一个函数(假设它被称为 get_balancesheet(URL) ),这样无论 URL 是什么,您都会以有条理的方式获得包含资产负债表的 Dataframe。
# Import libraries
import requests
import re
from bs4 import BeautifulSoup
我写了以下需要大量改进的函数
def Get_Data_Balance_Sheet(url):
page = requests.get(url)
# Create a BeautifulSoup object
soup = BeautifulSoup(page.content)
futures1 = soup.find_all(text=re.compile('CONSOLIDATED BALANCE SHEETS'))
Table=[]
for future in futures1:
for row in future.find_next("table").find_all("tr"):
t1=[cell.get_text(strip=True) for cell in row.find_all("td")]
Table.append(t1)
# Remove list from list of lists if list is empty
Table = [x for x in Table if x != []]
return Table
然后我执行以下操作
url='https://www.sec.gov/Archives/edgar/data/1326801/000132680120000013/fb-12312019x10k.htm'
Tab=Get_Data_Balance_Sheet(url)
Tab
请注意,这不是我打算拥有的。这不是简单地将其放入数据框中,而是我们需要对其进行更改,以便无论使用哪个 URL,我们都可以获得资产负债表。
【问题讨论】:
-
我认为不可能做你想做的事,至少不能这样。 EDGAR 文件在很多方面都很糟糕,其中之一就是缺乏统一的格式。因此,使用一个 beautifulsoup 脚本可能无法抓取所有文件。但是,如果您同时拥有申报人的 CIK 和特定申报的入藏号,则可以直接获取资产负债表。如果没有,则必须按公司名称、申请类型和期限搜索 EDGAR,并从中提取该期限内该类型每个申请的 CIK 和登录号。
-
@JackFleeting 那么假设我有 CIK 编号,即 0000320193,我如何才能获得这家公司 10-K 的资产负债表?
标签: python-3.x beautifulsoup request finance