
Введение
В этом руководстве мы рассмотрим надежный и удобный способ использования Cloudflared — инструмента от Cloudflare, который предоставляет защищённую, общедоступную ссылку на ваше приложение Streamlit. В конце этого руководства мы создадим полноценную панель управления криптовалютами, которая динамически извлекает и визуализирует данные о ценах в реальном времени с CoinMarketCap.
Установка необходимых зависимостей
Первым шагом необходимо установить зависимости для создания и развертывания панели управления криптовалютами на базе Streamlit. Используйте следующие команды:
!pip install streamlit requests beautifulsoup4 pandas matplotlib plotly
!npm install -g localtunnel
Эти команды установят необходимые библиотеки Python, такие как Streamlit для веб-приложений, BeautifulSoup4 для веб-скрапинга, Pandas для обработки данных и Plotly для интерактивных визуализаций. Также будет установлен LocalTunnel для создания публичного URL для доступа к приложению Streamlit из Google Colab.
Создание приложения Streamlit
Далее мы определим веб-приложение Streamlit, которое извлекает цены криптовалют в реальном времени с CoinMarketCap и отображает их в интерактивной панели управления. Приложение использует BeautifulSoup4 для извлечения 10 лучших криптовалют, включая их название, символ, цену, процент изменения и рыночную капитализацию.
%%writefile app.py
import streamlit as st
import requests
from bs4 import BeautifulSoup
import pandas as pd
import plotly.express as px
def scrape_crypto_prices():
url = "https://coinmarketcap.com/"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers)
if response.status_code != 200:
return pd.DataFrame(), "Ошибка при получении данных."
soup = BeautifulSoup(response.text, "html.parser")
rows = soup.select("tbody tr")[:10]
data = []
for row in rows:
columns = row.find_all("td")
name = columns[2].find("p").text
symbol = columns[2].find("p", class_="coin-item-symbol").text
price = columns[3].text
change = columns[4].text
market_cap = columns[6].text
data.append([name, symbol, price, change, market_cap])
return pd.DataFrame(data, columns=["Название", "Символ", "Цена", "% Изменение", "Рыночная Капитализация"]), None
Данные обрабатываются с помощью Pandas и визуализируются с Plotly. Приложение отображает столбчатую диаграмму для сравнения цен и круговую диаграмму для отображения распределения рыночной капитализации. Если возникает ошибка при получении данных, отображается соответствующее сообщение.
Запуск приложения
Теперь запустим приложение Streamlit в фоновом режиме и создадим Cloudflare туннель для доступа:
import subprocess
import time
subprocess.Popen(["streamlit", "run", "app.py", "--server.port=8501"])
time.sleep(5)
!./cloudflared tunnel --url http://localhost:8501 --no-autoupdate
Этот код запускает приложение Streamlit на порту 8501 и создает публичный URL для доступа к приложению без необходимости аутентификации.
Заключение
В этом руководстве мы шаг за шагом создали и развернули приложение для отслеживания криптовалют в реальном времени, используя Streamlit, BeautifulSoup, Pandas и Plotly. Мы успешно извлекли данные о криптовалюте с CoinMarketCap и разместили их в интерактивной панели управления. Этот подход обеспечивает легкое развертывание без необходимости управления аутентификацией, что идеально подходит как для новичков, так и для разработчиков.
Дополнительные ресурсы
Обратите внимание на наш Telegram-канал и не забудьте подписаться на нас в Twitter. Также посмотрите практический пример решения на основе ИИ — продажный бот, разработанный для автоматизации взаимодействия с клиентами.