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()
Back to list