#!/usr/bin/env python
# coding: utf-8
# In[20]:
import re
import json
import csv
from io import StringIO
from bs4 import BeautifulSoup
import requests
# In[21]:
url_stats = 'https://finance.yahoo.com/quote/{}/key-statistics?p={}'
url_profile = 'https://finance.yahoo.com/quote/{}/profile?p={}'
url_financials = 'https://finance.yahoo.com/quote/{}/financials?p={}'
# In[46]:
stock = 'GME'
print("###################################################################################")
print("Collicting info for {}".format(stock))
# In[23]:
responce = requests.get(url_financials.format(stock, stock))
# In[24]:
soup = BeautifulSoup(responce.text, 'html.parser')
# In[25]:
pattern = re.compile(r'\s--\sData\s--\s')
script_data = soup.find('script', text=pattern).contents[0]
# In[26]:
start = script_data.find("context")-2
# In[27]:
json_data = json.loads(script_data[start:-12])
# # Financial data
# In[28]:
annual_is = json_data['context']['dispatcher']['stores']['QuoteSummaryStore']['incomeStatementHistory']['incomeStatementHistory']
quarterly_is = json_data['context']['dispatcher']['stores']['QuoteSummaryStore']['incomeStatementHistoryQuarterly']['incomeStatementHistory']
annual_cf = json_data['context']['dispatcher']['stores']['QuoteSummaryStore']['cashflowStatementHistoryQuarterly']['cashflowStatements']
quarterly_cf = json_data['context']['dispatcher']['stores']['QuoteSummaryStore']['cashflowStatementHistory']['cashflowStatements']
annual_bs = json_data['context']['dispatcher']['stores']['QuoteSummaryStore']['balanceSheetHistory']['balanceSheetStatements']
quarterly_bs = json_data['context']['dispatcher']['stores']['QuoteSummaryStore']['balanceSheetHistoryQuarterly']['balanceSheetStatements']
# In[29]:
annual_is_stats = []
quarterly_is_stats = []
annual_cf_stats = []
quarterly_cf_stats = []
annual_bs_stats =[]
quarterly_bs_stats = []
for s in annual_is:
statement = {}
for key, val in s.items():
try:
statement[key] = val['raw']
except TypeError:
continue
except KeyError:
continue
annual_is_stats.append(statement)
for s in quarterly_is:
statement = {}
for key, val in s.items():
try:
statement[key] = val['raw']
except TypeError:
continue
except KeyError:
continue
quarterly_is_stats.append(statement)
for s in annual_cf:
statement = {}
for key, val in s.items():
try:
statement[key] = val['raw']
except TypeError:
continue
except KeyError:
continue
annual_cf_stats.append(statement)
for s in quarterly_cf:
statement = {}
for key, val in s.items():
try:
statement[key] = val['raw']
except TypeError:
continue
except KeyError:
continue
quarterly_cf_stats.append(statement)
for s in annual_bs:
statement = {}
for key, val in s.items():
try:
statement[key] = val['raw']
except TypeError:
continue
except KeyError:
continue
annual_bs_stats.append(statement)
for s in quarterly_bs:
statement = {}
for key, val in s.items():
try:
statement[key] = val['raw']
except TypeError:
continue
except KeyError:
continue
quarterly_bs_stats.append(statement)
# In[39]:
print("###################################################################################")
print("Showing annual income Statement History")
print(annual_is_stats[0])
# In[40]:
print("###################################################################################")
print("Showing quarterly income Statement History")
print(quarterly_is_stats[0])
# In[41]:
print("###################################################################################")
print("Showing annual cash flow Statements")
print(annual_cf_stats[0])
# In[42]:
print("###################################################################################")
print("Showing quarterly cash flow Statements")
print(quarterly_cf_stats[0])
# In[43]:
print("###################################################################################")
print("Showing annual balance Sheet Statements")
print(annual_bs_stats[0])
# In[44]:
print("###################################################################################")
print("Showing quarterly balance Sheet Statements")
print(quarterly_bs_stats[0])
# # Profile data
# In[30]:
responce = requests.get(url_profile.format(stock, stock))
soup = BeautifulSoup(responce.text, 'html.parser')
pattern = re.compile(r'\s--\sData\s--\s')
script_data = soup.find('script', text=pattern).contents[0]
start = script_data.find("context")-2
json_data = json.loads(script_data[start:-12])
# In[31]:
print("###################################################################################")
print("Showing company Officers")
print(json_data['context']['dispatcher']['stores']['QuoteSummaryStore']['assetProfile']['companyOfficers'])
# In[32]:
print("###################################################################################")
print('Showing long Business Summary')
print(json_data['context']['dispatcher']['stores']['QuoteSummaryStore']['assetProfile']['longBusinessSummary'])
# In[33]:
# Filtes for K8 and K10 sec filings
filings =[]
for f in json_data['context']['dispatcher']['stores']['QuoteSummaryStore']['secFilings']['filings']:
if f['type'] == '8-K' or f['type'] == '10-K':
filings.append(f)
# In[34]:
print("###################################################################################")
print("Showing 8-K and 10-K SEC filings")
print(filings)
# # Statistics
# In[35]:
responce = requests.get(url_stats.format(stock, stock))
soup = BeautifulSoup(responce.text, 'html.parser')
pattern = re.compile(r'\s--\sData\s--\s')
script_data = soup.find('script', text=pattern).contents[0]
start = script_data.find("context")-2
json_data = json.loads(script_data[start:-12])
# In[36]:
print("###################################################################################")
print("Showing Key Statistics")
print(json_data['context']['dispatcher']['stores']['QuoteSummaryStore']['defaultKeyStatistics'])
# In[18]:
stock_url = 'https://query1.finance.yahoo.com/v7/finance/download/{}?'
params = {
'range': '5y',
'interval': '1d',
'events': 'history',
'includeAdjustedClose': 'true'
}
responce = requests.get(stock_url.format(stock), params=params)
# In[19]:
print("###################################################################################")
print("Showing history 5y 1d interval")
file = StringIO(responce.text)
reader = csv.reader(file)
data = list(reader)
for row in data[:5]:
print(row)
# In[ ]:
Comments
0 B
|👍
/👎