有沒有人有過刮擦SEC 10-K和10-Q申請的經驗?我試圖從這些文件中刮取每月實現的股票回購,我陷入了困境。具體而言,我想獲得以下信息:1.期間; 2.購買股份總數; 3.每股平均價格支付; 4.作爲公開宣佈計劃或計劃的一部分購買的股份總數; 5.根據計劃或計劃在2004年至2014年每個月可能購買的股票數量(或近似美元價值)。我總共有90,000多份表格可供解析,因此不可行手動。網站刮取SEC Edgar 10-K和10-Q申請
此信息通常以10-Ks的「第2部分第5項註冊人普通股權,相關股東事宜和發行人購買股票證券市場」和「第2部分第2項未登記銷售股權證券和所得款項用途」。
這裏是我需要解析10-Q申請的一個例子: https://www.sec.gov/Archives/edgar/data/12978/000104746909007169/a2193892z10-q.htm
如果一個公司沒有股份回購,該表可從本季度報告中丟失。
我試圖用Python BeautifulSoup解析html文件,但結果並不令人滿意,主要是因爲這些文件沒有以一致的格式編寫。
例如,我能想到的唯一方法來解析這些形式是
from bs4 import BeautifulSoup
import requests
import unicodedata
import re
url='https://www.sec.gov/Archives/edgar/data/12978/000104746909007169/a2193892z10-q.htm'
def parse_html(url):
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html5lib')
tables = soup.find_all('table')
identifier = re.compile(r'Total.*Number.*of.*Shares.*\w*Purchased.*', re.UNICODE|re.IGNORECASE|re.DOTALL)
n = len(tables) -1
rep_tables = []
while n >= 0:
table = tables[n]
remove_invalid_tags(table)
table_text = unicodedata.normalize('NFKD', table.text).encode('ascii','ignore')
if re.search(identifier, table_text):
rep_tables += [table]
n -= 1
else:
n -= 1
return rep_tables
def remove_invalid_tags(soup, invalid_tags=['sup', 'br']):
for tag in invalid_tags:
tags = soup.find_all(tag)
if tags:
[x.replaceWith(' ') for x in tags]
上面的代碼只返回可能包含回購信息的混亂。但是,1)它不可靠; 2)速度很慢; 3)以下步驟颳去日期/月份,股票價格和股數等等,要做得更加痛苦。我想知道是否有更多可行的語言/方法/應用程序/數據庫來獲取此類信息?太感謝了!
附上我需要解析的網站的完整列表。如果你能給我一些提示,我將非常感激!謝謝! https://www.dropbox.com/s/369aviq5vkno9o3/ListURL.xlsx?dl=0 –