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()

[file-name 000067_2025-03-18_21-52-40.txt]