Разделяем CSS и HTML с помощью Python
Здравствуйте! При копировании некоторых веб страниц можно видеть огромные куски CSS стилей, находящихся в одном файле с разметкой. Все это приводит к неудобству при чтении и разборе кода. В сегодняшней статье мы рассмотрим как превратить внутренние стили страницы во внешние при помощи скрипта на Python.
Итак, код:
import os
import re
# модуль для обработки файлов
import shutil
# Создание папки для файлов стилей, если её еще нет
css_folder = "styles"
if not os.path.exists(css_folder):
os.makedirs(css_folder)
# Чтение исходного HTML файла с явным указанием кодировки UTF-8
with open("index.html", "r", encoding="utf-8") as f:
html_content = f.read()
# Извлечение CSS стилей из HTML
css_styles = re.findall(r'<style.*?>(.*?)</style>', html_content, re.DOTALL)
# Создание копии исходного HTML файла без стилей
shutil.copyfile("index.html", os.path.join(css_folder, "updated_index.html"))
# Подключение стилей к HTML и сохранение их в отдельные файлы
for i, css in enumerate(css_styles):
# Запись стилей в отдельный файл
with open(os.path.join(css_folder, f"style_{i+1}.css"), "w", encoding="utf-8") as css_file:
css_file.write(css)
# Добавление подключения к внешнему файлу стилей в обновленный HTML файл
with open(os.path.join(css_folder, "updated_index.html"), "a", encoding="utf-8") as updated_html_file:
updated_html_file.write(f'<link rel="stylesheet" type="text/css" href="styles/style_{i+1}.css">')
print("Стили были вырезаны из HTML и сохранены в отдельные файлы в папке 'styles'. HTML файл был обновлен с подключением стилей.")
В данном примере для поиска тегов стилей используется модуль re для поиска регулярных выражений в Python, который подробно описан в видеокурсе Программирование на Python с Нуля до Гуру
Вы можете адаптировать данный скрипт, с учетом ваших потребностей, будь то вынос внутренних js скриптов . Таким образом мы разделили HTML разметку и CSS стили при помощи Python и его встроенных библиотек, что несомненно улучшит читаемость кода.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.