About80Ninjas icon

getStonks.py

About80Ninjas | PRO | 02/14/21 04:14:42 AM UTC | 0 ⭐ | 2081 👁️ | Never ⏰ | []
Python |

7.04 KB

|

None

|

0 👍

/

0 👎

#!/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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎