Как использовать Beautiful Soup для очистки базы данных Edgar от SEC и получения данных о желанияхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать Beautiful Soup для очистки базы данных Edgar от SEC и получения данных о желаниях

Сообщение Anonymous »

Заранее извиняюсь за длинный вопрос: я новичок в 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, что несколько неясно. Я просто хочу убедиться, что трачу свое время эффективно на поиск наилучшего возможного решения.
Спасибо за помощь!

Подробнее здесь: https://stackoverflow.com/questions/556 ... esire-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как использовать Beautiful Soup для очистки базы данных Edgar SEC и получения данных о желаниях
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Анализ данных XML-формы SEC EDGAR с дочерними узлами с помощью BeautifulSoup
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Доступ к данным регистрации из API SEC EDGAR в Python
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Доступ к данным регистрации из API SEC EDGAR в Python
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Доступ к данным регистрации из API SEC EDGAR в Python
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»