def get_top_volume_coins() -> pd.DataFrame: """Scrapes top coins by trading volume "https://www.coingecko.com/en/coins/high_volume" Returns ------- pandas.DataFrame Rank, Name, Symbol, Price, Change_1h, Change_24h, Change_7d, Volume_24h, Market_Cap """ columns = [ "Rank", "Name", "Symbol", "Price", "Change_1h", "Change_24h", "Change_7d", "Volume_24h", "Market_Cap", ] url = "https://www.coingecko.com/en/coins/high_volume" rows = scrape_gecko_data(url).find("tbody").find_all("tr") results = [] for row in rows: row_cleaned = clean_row(row) if len(row_cleaned) == 9: row_cleaned.insert(0, "?") row_cleaned.pop(3) results.append(row_cleaned) df = replace_qm(pd.DataFrame(results, columns=columns)) df.drop("Rank", axis=1, inplace=True) create_df_index(df, "Rank") df["Price"] = df["Price"].apply(lambda x: float(x.strip("$").replace(",", ""))) return df
def get_stable_coins() -> pd.DataFrame: """Scrapes stable coins data from "https://www.coingecko.com/en/stablecoins" [Source: CoinGecko] Returns ------- pandas.DataFrame Rank, Name, Symbol, Price, Change_24h, Exchanges, Market_Cap, Change_30d, Url """ columns = [ "Rank", "Name", "Symbol", "Price", "Change_24h", "Exchanges", "Market_Cap", "Change_30d", "Url", ] url = "https://www.coingecko.com/en/stablecoins" rows = scrape_gecko_data(url).find("tbody").find_all("tr") results = [] for row in rows: link = GECKO_BASE_URL + row.find("a")["href"] row_cleaned = clean_row(row) if len(row_cleaned) == 8: row_cleaned.append(None) ( rank, name, *symbols, price, volume_24h, exchanges, market_cap, change_30d, ) = row_cleaned symbol = symbols[0] if symbols else symbols results.append([ rank, name, symbol, price, volume_24h, exchanges, market_cap, change_30d, link, ]) df = replace_qm(pd.DataFrame(results, columns=columns)) df.drop("Rank", axis=1, inplace=True) create_df_index(df, "Rank") df["Price"] = df["Price"].apply( lambda x: float(x.strip("$").replace(",", ""))) return df
def get_recently_added_coins() -> pd.DataFrame: """Scrape recently added coins on CoinGecko from "https://www.coingecko.com/en/coins/recently_added" [Source: CoinGecko] Returns ------- pandas.DataFrame Recently Added Coins on CoinGecko Columns: Name, Symbol, Price, Change_1h, Change_24h, Added """ columns = [ "Name", "Symbol", "Price", "Change_1h", "Change_24h", "Added", "Url", ] url = "https://www.coingecko.com/en/coins/recently_added" try: scraped_data = scrape_gecko_data(url) except RetryError as e: print(e) return pd.DataFrame() rows = scraped_data.find("tbody").find_all("tr") results = [] for row in rows: url = GECKO_BASE_URL + row.find("a")["href"] row_cleaned = clean_row(row) ( name, symbol, _, price, *changes, _, _volume, last_added, ) = row_cleaned change_1h, change_24h, _ = changes_parser(changes) results.append( [name, symbol, price, change_1h, change_24h, last_added, url]) df = replace_qm(pd.DataFrame(results, columns=columns)) df.index = df.index + 1 df.reset_index(inplace=True) df.rename(columns={"index": "Rank"}, inplace=True) df["Price"] = df["Price"].apply( lambda x: float(x.strip("$").replace(",", ""))) return df