TrashNotes

2025-03-18 21:52:40
example currency

import requests
from bs4 import BeautifulSoup
import csv
import sys

# Шаг 1: Получаем HTML-код страницы
def fetch_html(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    }
    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()  # Проверяем статус ответа
        return response.text
    except requests.exceptions.RequestException as e:
        print(f"Ошибка при получении страницы: {e}")
        sys.exit(1)

# Шаг 2: Парсим HTML с помощью BeautifulSoup
def parse_currency_data(html_content):
    soup = BeautifulSoup(html_content, "html.parser")
    
    # Находим таблицу с курсами валют (актуализируем класс)
    currency_table = soup.find("table", class_="mfcur-table-lg")  # Актуальный класс
    if not currency_table:
        print("Таблица с курсами валют не найдена на странице.")
        sys.exit(1)

    # Извлекаем строки таблицы
    rows = currency_table.find_all("tr")
    if not rows:
        print("Строки в таблице не найдены.")
        sys.exit(1)

    # Собираем данные
    data = []
    for row in rows:
        cols = row.find_all("td")
        cols = [col.text.strip() for col in cols]  # Убираем лишние пробелы
        if cols:  # Пропускаем пустые строки
            data.append(cols)

    return data

# Шаг 3: Сохраняем данные в CSV
def save_to_csv(data, filename):
    try:
        with open(filename, mode="w", newline="", encoding="utf-8") as file:
            writer = csv.writer(file)
            writer.writerow(["Currency", "Buy", "Sell", "Average"])  # Заголовки столбцов
            writer.writerows(data)
        print(f"Данные успешно сохранены в файл: {filename}")
    except IOError as e:
        print(f"Ошибка при записи в файл: {e}")
        sys.exit(1)

# Основная функция
def main():
    url = "https://minfin.com.ua/currency/";
    csv_file = "currency_rates.csv"

    # Получаем HTML-код страницы
    html_content = fetch_html(url)

    # Парсим данные о курсах валют
    currency_data = parse_currency_data(html_content)

    # Сохраняем данные в CSV
    save_to_csv(currency_data, csv_file)

if __name__ == "__main__":
    main()
← Previous Next →
Back to list