Amazing-Python-Scripts
86 строк · 2.6 Кб
1import requests2from bs4 import BeautifulSoup3import tkinter as tk4from tkinter import ttk5from tkinter import font as tkFont6from selenium import webdriver7from selenium.webdriver.common.keys import Keys8import time9
10driver_path = input('Enter chrome driver path: ')11
12
13# Function to scrape stock data from generated URL
14def scraper():15url = 'https://www.cointracker.io/price'16driver = webdriver.Chrome(driver_path)17driver.get(url)18
19# Wait for results to load20time.sleep(5)21html = driver.page_source22
23# Start scraping resultant html data24soup = BeautifulSoup(html, 'html.parser')25
26# Find the crypto price table to scrape27results = soup.find("table", {"class": 'table mx-auto'})28rows = results.findChildren('tr')29
30table_data = []31row_values = []32# Append individual cryptocurrency data into a list33for row in rows:34cells = row.findChildren(['th', 'td'])35for cell in cells:36value = cell.text.strip()37value = " ".join(value.split())38row_values.append(value)39table_data.append(row_values)40row_values = []41
42# Formatting the cryptocurrency data stored in the list43stocks_data = ""44for stock in table_data:45single_record = ""46for cell in stock:47format_cell = "{:<30}"48single_record += format_cell.format(cell[:20])49single_record += "\n"50stocks_data += single_record51
52# Adding the formatted data into tkinter GUI53query_label.config(state=tk.NORMAL)54query_label.delete(1.0, "end")55query_label.insert(1.0, stocks_data)56query_label.config(state=tk.DISABLED)57driver.close()58
59
60# Creating tkinter window
61window = tk.Tk()62window.title('Cryptocurrency Price Checker')63window.geometry('1200x1000')64window.configure(bg='white')65
66style = ttk.Style()67style.configure('my.TButton', font=('Helvetica', 16))68style.configure('my.TFrame', background='white')69
70# label text for title
71ttk.Label(window, text="Cryptocurrency Price Checker",72background='white', foreground="DodgerBlue2",73font=("Helvetica", 30, 'bold')).grid(row=0, column=3, padx=300)74
75submit_btn = ttk.Button(window, text="Fetch Live Price!",76style='my.TButton', command=scraper)77submit_btn.grid(row=5, column=3, pady=5, padx=15, ipadx=5)78
79frame = ttk.Frame(window, style='my.TFrame')80frame.place(relx=0.50, rely=0.12, relwidth=0.98, relheight=0.90, anchor="n")81
82# To display stock data
83query_label = tk.Text(frame, height="52", width="500", bg="lightskyblue1")84query_label.grid(row=7, columnspan=2)85
86window.mainloop()87