Skip to content

Instantly share code, notes, and snippets.

@EM5813
Forked from shashankvemuri/all.py
Created December 4, 2020 17:47
Show Gist options
  • Save EM5813/3ac28785a4095dfec346a57e6fd7cc5c to your computer and use it in GitHub Desktop.
Save EM5813/3ac28785a4095dfec346a57e6fd7cc5c to your computer and use it in GitHub Desktop.
all of the code
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup as soup
from urllib.request import Request, urlopen
pd.set_option('display.max_colwidth', 25)
# Input
symbol = input('Enter a ticker: ')
print ('Getting data for ' + symbol + '...\n')
# Set up scraper
url = ("http://finviz.com/quote.ashx?t=" + symbol.lower())
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()
html = soup(webpage, "html.parser")
def get_fundamentals():
try:
# Find fundamentals table
fundamentals = pd.read_html(str(html), attrs = {'class': 'snapshot-table2'})[0]
# Clean up fundamentals dataframe
fundamentals.columns = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11']
colOne = []
colLength = len(fundamentals)
for k in np.arange(0, colLength, 2):
colOne.append(fundamentals[f'{k}'])
attrs = pd.concat(colOne, ignore_index=True)
colTwo = []
colLength = len(fundamentals)
for k in np.arange(1, colLength, 2):
colTwo.append(fundamentals[f'{k}'])
vals = pd.concat(colTwo, ignore_index=True)
fundamentals = pd.DataFrame()
fundamentals['Attributes'] = attrs
fundamentals['Values'] = vals
fundamentals = fundamentals.set_index('Attributes')
return fundamentals
except Exception as e:
return e
def get_news():
try:
# Find news table
news = pd.read_html(str(html), attrs = {'class': 'fullview-news-outer'})[0]
links = []
for a in html.find_all('a', class_="tab-link-news"):
links.append(a['href'])
# Clean up news dataframe
news.columns = ['Date', 'News Headline']
news['Article Link'] = links
news = news.set_index('Date')
return news
except Exception as e:
return e
def get_insider():
try:
# Find insider table
insider = pd.read_html(str(html), attrs = {'class': 'body-table'})[0]
# Clean up insider dataframe
insider = insider.iloc[1:]
insider.columns = ['Trader', 'Relationship', 'Date', 'Transaction', 'Cost', '# Shares', 'Value ($)', '# Shares Total', 'SEC Form 4']
insider = insider[['Date', 'Trader', 'Relationship', 'Transaction', 'Cost', '# Shares', 'Value ($)', '# Shares Total', 'SEC Form 4']]
insider = insider.set_index('Date')
return insider
except Exception as e:
return e
print ('Fundamental Ratios: ')
print(get_fundamentals())
print ('\nRecent News: ')
print(get_news())
print ('\nRecent Insider Trades: ')
print(get_insider())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment