Задать вопрос
Ответы пользователя по тегу Sublime Text
  • Как очистить HTML от всех аттрибутов?

    Qwentor
    @Qwentor Автор вопроса
    Веб-программист
    В итоге ничего путного для Sublime Text и других не нашел - очистил самописным скриптом на питоне:
    from bs4 import BeautifulSoup, Comment
    import os
    
    def clean_html(html):
        # Парсим HTML
        soup = BeautifulSoup(html, 'html.parser')
    
        # Удаляем комментарии
        for element in soup(text=lambda text: isinstance(text, Comment)):
            element.extract()
    
        # Удаляем скрипты и стили
        for script in soup(['script', 'style', 'link', 'meta']):
            script.decompose()
        
        # Оставляем только теги без атрибутов
        for tag in soup.find_all(True):
            if tag.name == "td":
                tag.attrs = {key: value for key, value in tag.attrs.items() if key == "colspan"}
            else:
                tag.attrs = {}
    
            print(tag.attrs)
    
         # Удаляем пустые теги
        for x in soup.find_all():
            if len(x.get_text(strip=True)) == 0 and x.name not in ['br', 'img']:
                x.extract()
    
        # Удаляем ненужные теги, оставляя содержимое
        invalid_tags = ['p', 'span']
    
        for c in invalid_tags:
            while soup.find(c):
                exec(f"soup.{c}.unwrap()")
        
        return str(soup.prettify())
    
    dir_path = os.path.dirname(os.path.realpath(__file__))
    fin_path = os.path.join(dir_path, "прайс.htm")
    print(fin_path)
    fin = open(fin_path, "r", encoding="cp1251")
    html = fin.read()
    
    html = clean_html(html)
    
    fin.close()
    fout_path = os.path.join(dir_path, "price.htm")
    print(fout_path)
    fout = open(fout_path, "w+", encoding="utf-8")
    fout.write(html)
    fout.close()
    Ответ написан
    Комментировать