Skip to content

Instantly share code, notes, and snippets.

@AseelAmr
Forked from shashankvemuri/all.py
Created January 14, 2023 23:54
Show Gist options
  • Save AseelAmr/4cc594db8a60827c02e72ac298b23ef1 to your computer and use it in GitHub Desktop.
Save AseelAmr/4cc594db8a60827c02e72ac298b23ef1 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