Руководство по развертыванию приложения Streamlit для веб-скрейпинга и визуализации криптовалюты в реальном времени


Введение

В этом руководстве мы рассмотрим надежный и удобный способ использования 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. Также посмотрите практический пример решения на основе ИИ — продажный бот, разработанный для автоматизации взаимодействия с клиентами.



Новости в сфере искусственного интеллекта