Заранее извиняюсь за длинный вопрос: я новичок в Python и стараюсь максимально подробно описать довольно конкретную ситуацию.
Я пытаюсь регулярно идентифицировать конкретные точки данных из документов SEC, однако я хочу автоматизировать это вместо того, чтобы вручную искать идентификатор компании CIK и форму регистрации. . На данный момент мне удалось дойти до момента, когда я загружаю метаданные обо всех документах, полученных SEC за определенный период времени. Выглядит это так:
index cik conm type date path
0 0 1000045 NICHOLAS FINANCIAL INC 10-Q 2019-02-14 edgar/data/1000045/0001193125-19-039489.txt
1 1 1000045 NICHOLAS FINANCIAL INC 4 2019-01-15 edgar/data/1000045/0001357521-19-000001.txt
2 2 1000045 NICHOLAS FINANCIAL INC 4 2019-02-19 edgar/data/1000045/0001357521-19-000002.txt
3 3 1000045 NICHOLAS FINANCIAL INC 4 2019-03-15 edgar/data/1000045/0001357521-19-000003.txt
4 4 1000045 NICHOLAS FINANCIAL INC 8-K 2019-02-01 edgar/data/1000045/0001193125-19-024617.txt
Несмотря на то, что у меня есть вся эта информация, а также возможность загружать эти текстовые файлы и просматривать лежащие в их основе данные, я не могу проанализировать эти данные в формате xbrl. и немного не в моей рубке. Вместо этого я наткнулся на этот скрипт (любезно предоставленный с этого сайта https://www.codeproject.com/Articles/12 ... ith-Python):
from bs4 import BeautifulSoup
import requests
import sys
# Access page
cik = '0000051143'
type = '10-K'
dateb = '20160101'
# Obtain HTML for search page
base_url = "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK={}&type={}&dateb={}"
edgar_resp = requests.get(base_url.format(cik, type, dateb))
edgar_str = edgar_resp.text
# Find the document link
doc_link = ''
soup = BeautifulSoup(edgar_str, 'html.parser')
table_tag = soup.find('table', class_='tableFile2')
rows = table_tag.find_all('tr')
for row in rows:
cells = row.find_all('td')
if len(cells) > 3:
if '2015' in cells[3].text:
doc_link = 'https://www.sec.gov' + cells[1].a['href']
# Exit if document link couldn't be found
if doc_link == '':
print("Couldn't find the document link")
sys.exit()
# Obtain HTML for document page
doc_resp = requests.get(doc_link)
doc_str = doc_resp.text
# Find the XBRL link
xbrl_link = ''
soup = BeautifulSoup(doc_str, 'html.parser')
table_tag = soup.find('table', class_='tableFile', summary='Data Files')
rows = table_tag.find_all('tr')
for row in rows:
cells = row.find_all('td')
if len(cells) > 3:
if 'INS' in cells[3].text:
xbrl_link = 'https://www.sec.gov' + cells[2].a['href']
# Obtain XBRL text from document
xbrl_resp = requests.get(xbrl_link)
xbrl_str = xbrl_resp.text
# Find and print stockholder's equity
soup = BeautifulSoup(xbrl_str, 'lxml')
tag_list = soup.find_all()
for tag in tag_list:
if tag.name == 'us-gaap:stockholdersequity':
print("Stockholder's equity: " + tag.text)
Просто запуск этого скрипта работает именно так, как мне хотелось бы. Он возвращает акционерный капитал данной компании (в данном случае IBM), и затем я могу взять это значение и записать его в файл Excel.
Мой вопрос состоит из двух частей:
Я взял три соответствующих столбцы (CIK, тип и дата) из моей исходной таблицы метаданных, приведенной выше, и записал их в список кортежей — я думаю, так оно и называется — выглядит так [('1009759', 'D', '20190215'),('1009891', 'D', '20190206'),...]). Как мне взять эти данные, заменить начальную часть найденного скрипта и эффективно выполнить цикл, чтобы получить список желаемых значений для каждой компании, документа и даты?
< li>Есть ли лучший способ сделать это? Я думаю, что будет какой-то пакет API или Python для запроса интересующих меня данных. Я знаю, что есть некоторая информация высокого уровня для формы 10-K и формы 10-Q, однако я нахожусь в форме. Ds, что несколько неясно. Я просто хочу убедиться, что трачу свое время эффективно на поиск наилучшего возможного решения.
Заранее извиняюсь за длинный вопрос: я новичок в Python и стараюсь максимально подробно описать довольно конкретную ситуацию.
Я пытаюсь регулярно идентифицировать конкретные точки данных из документов SEC, однако я хочу автоматизировать это вместо того, чтобы вручную искать идентификатор компании CIK и форму регистрации. . На данный момент мне удалось дойти до момента, когда я загружаю метаданные обо всех документах, полученных SEC за определенный период времени. Выглядит это так:
[code]index cik conm type date path 0 0 1000045 NICHOLAS FINANCIAL INC 10-Q 2019-02-14 edgar/data/1000045/0001193125-19-039489.txt 1 1 1000045 NICHOLAS FINANCIAL INC 4 2019-01-15 edgar/data/1000045/0001357521-19-000001.txt 2 2 1000045 NICHOLAS FINANCIAL INC 4 2019-02-19 edgar/data/1000045/0001357521-19-000002.txt 3 3 1000045 NICHOLAS FINANCIAL INC 4 2019-03-15 edgar/data/1000045/0001357521-19-000003.txt 4 4 1000045 NICHOLAS FINANCIAL INC 8-K 2019-02-01 edgar/data/1000045/0001193125-19-024617.txt [/code]
Несмотря на то, что у меня есть вся эта информация, а также возможность загружать эти текстовые файлы и просматривать лежащие в их основе данные, я не могу проанализировать эти данные в формате xbrl. и немного не в моей рубке. Вместо этого я наткнулся на этот скрипт (любезно предоставленный с этого сайта https://www.codeproject.com/Articles/1227765/Parsing-XBRL-with-Python):
# Access page cik = '0000051143' type = '10-K' dateb = '20160101'
# Obtain HTML for search page base_url = "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK={}&type={}&dateb={}" edgar_resp = requests.get(base_url.format(cik, type, dateb)) edgar_str = edgar_resp.text
# Find the document link doc_link = '' soup = BeautifulSoup(edgar_str, 'html.parser') table_tag = soup.find('table', class_='tableFile2') rows = table_tag.find_all('tr') for row in rows: cells = row.find_all('td') if len(cells) > 3: if '2015' in cells[3].text: doc_link = 'https://www.sec.gov' + cells[1].a['href']
# Exit if document link couldn't be found if doc_link == '': print("Couldn't find the document link") sys.exit()
# Obtain HTML for document page doc_resp = requests.get(doc_link) doc_str = doc_resp.text
# Find the XBRL link xbrl_link = '' soup = BeautifulSoup(doc_str, 'html.parser') table_tag = soup.find('table', class_='tableFile', summary='Data Files') rows = table_tag.find_all('tr') for row in rows: cells = row.find_all('td') if len(cells) > 3: if 'INS' in cells[3].text: xbrl_link = 'https://www.sec.gov' + cells[2].a['href']
# Obtain XBRL text from document xbrl_resp = requests.get(xbrl_link) xbrl_str = xbrl_resp.text
# Find and print stockholder's equity soup = BeautifulSoup(xbrl_str, 'lxml') tag_list = soup.find_all() for tag in tag_list: if tag.name == 'us-gaap:stockholdersequity': print("Stockholder's equity: " + tag.text) [/code]
Просто запуск этого скрипта работает именно так, как мне хотелось бы. Он возвращает акционерный капитал данной компании (в данном случае IBM), и затем я могу взять это значение и записать его в файл Excel.
Мой вопрос состоит из двух частей:
[list] [*]Я взял три соответствующих столбцы (CIK, тип и дата) из моей исходной таблицы метаданных, приведенной выше, и записал их в список кортежей — я думаю, так оно и называется — выглядит так [('1009759', 'D', '20190215'),('1009891', 'D', '20190206'),...]). Как мне взять эти данные, заменить начальную часть найденного скрипта и эффективно выполнить цикл, чтобы получить список желаемых значений для каждой компании, документа и даты? < li>Есть ли лучший способ сделать это? Я думаю, что будет какой-то пакет API или Python для запроса интересующих меня данных. Я знаю, что есть некоторая информация высокого уровня для формы 10-K и формы 10-Q, однако я нахожусь в форме. Ds, что несколько неясно. Я просто хочу убедиться, что трачу свое время эффективно на поиск наилучшего возможного решения. [/list]
Я пытаюсь извлечь отдельные фонды из формы N-PORT-P/A Комиссии по ценным бумагам и биржам (SEC), используя красивый суп и xml. Типичная заявка, описанная ниже и , выглядит так:
Я хочу получать отчеты из API SEC EDGAR и проводить анализ с помощью Python. Насколько я могу судить, похоже, что основная проблема заключается в том, что я использую неправильный формат файла, но методы, которые я нашел для преобразования в HTML,...
Я хочу получать отчеты из API SEC EDGAR и проводить анализ с помощью Python. Судя по тому, что я могу сказать, похоже, что основная проблема заключается в том, что я использую неправильный формат файла, но методы, которые я нашел для преобразования...
Я хочу получать отчеты из API SEC EDGAR и проводить анализ с помощью Python. Насколько я могу судить, похоже, что основная проблема заключается в том, что я использую неправильный формат файла, но методы, которые я нашел для преобразования в HTML,...