HTMLHyperText Markup Language является разметкой для страниц в браузере, но все привыкли обращаться к нему как к определенному виду синтаксиса для создания этих самых страниц сайта. Чтобы конвертировать обратно HTML-код в текст, существуют определенные онлайн-редакторы, возможно, программы (я не в курсе последних), но проблема остается одна - ими не очень то удобно пользоваться, особенно когда вместе с ними идут ограничения на количество введенных символов, премиум-подписка и т.д.

Мы с вами напишем свой собственный скрипт для программы ZennoPoster: перевод HTML верстки в обычный текстовый вид, который нужен, например, для последующей правки текстовых данных, или для лучшего визуального восприятия. В любом случае, данный код пригодится нам для дальнейших задач, а сама схема действий позволит понять как справляться с очередными вызовами!

[maxbutton id="3" text="ZennoPoster" url="/af-zenno" linktitle="External link | Внешняя ссылка" window="new" nofollow="true"]

Как можно видеть из скриншота ниже, мы "запихаем" все действия в один так называемый кубик, где будут указаны операции типа поиска по регулярным значениям и замена текста на их основе. Кроме этого, мы укажем путь к файлу с данными и возьмем их для примера, чтобы затем после выполнения всех функций записать их в отдельный источник.

HTML в текст - как? С помощью ZennoPoster и C#

Главным событием для нас будет являться универсальность происходящего: чтобы можно было использовать скрипт в дальнейшем и применять его по отношению к другим экшенам легко и без каких-либо усилий.

Код - перевод HTML текста в обычный формат

// Берем текст в формате html из файла в переменную string textzero = project.ExecuteMacro(project.Path + "html_to_txt.txt"); // Обработка текста "В переменную" project.Variables["txt_path"].Value = textzero; string account_full = System.IO.File.ReadAllText(textzero); project.Variables["new_txt"].Value = account_full;

Для начала нам необходимо взять текст из файла под незамысловатым названием "html_to_txt.txt" - это будет путь к самому файлу. Далее кладем текстовые данные в переменную, чтобы можно было работать и изменять их. Все это происходит с помощью кода C#, поэтому не нужно использовать блоки Зенки.

// Убираем лишние переносы строки string text01 = project.ExecuteMacro(project.Variables["new_txt"].Value); // Обработка текста "Замена" project.Variables["new_txt"].Value = Macros.TextProcessing.Replace(text01, "n.*?", " ", "Regex", "All");

Теперь убираем лишние переносы при помощи регулярного выражения. Можно, конечно, сделать это и с программой "Notepad++", но нас интересует не 1 макрос, а несколько подряд.

// Меняем двойные переносы на ординарные string text02 = project.ExecuteMacro(project.Variables["new_txt"].Value); // Обработка текста "Замена" project.Variables["new_txt"].Value = Macros.TextProcessing.Replace(text02, "nn.*?", "", "Regex", "All");

Здесь делаем аналогичную операцию, но только меняем двойные переносы, которые часто встречаются в коде, который берется на просторах интернета. Обратите внимание на тот факт, что текст нужно постоянно класть в переменную для дальнейшей обработки...

// Убираем лишние классы css string textClass = project.ExecuteMacro(project.Variables["new_txt"].Value); string regex_txtClass = @"class="+ ".*?" + ""; string regex_changeClass = @""; project.Variables["new_txt"].Value = Macros.TextProcessing.Replace(textClass, regex_txtClass, regex_changeClass, "Regex", "All");

Чтобы убрать CSS-классы, требуется использовать уже более сложный перебор регулярок: так мы не будем каждый раз выискивать разные элементы HTML-кода, если в нем присутствуют одинаковые классы.

// Убираем лишние классы css string textRemove = project.ExecuteMacro(project.Variables["new_txt"].Value); string regex_txtRemove = @"(?<=)|(?<=)"; string regex_changeRemove = @""; project.Variables["new_txt"].Value = Macros.TextProcessing.Replace(textRemove, regex_txtRemove, regex_changeRemove, "Regex", "All");

Продолжаем удалять лишний код из текста, чтобы превратить его в чистый. В данном случае заменяем одну регулярку другой.

// Убираем span string text10 = project.ExecuteMacro(project.Variables["new_txt"].Value); string regex_txt8 = @"|"; string regex_change8 = @" "; project.Variables["new_txt"].Value = Macros.TextProcessing.Replace(text10, regex_txt8, regex_change8, "Regex", "All"); // Убираем ссылки string text11 = project.ExecuteMacro(project.Variables["new_txt"].Value); string regex_txt9 = @"" + "|" + ".*?"; // Обработка текста "Замена" project.Variables["new_txt"].Value = Macros.TextProcessing.Replace(text11, regex_txt9, " ", "Regex", "All"); // 2 spaces to 1 space string text12 = project.ExecuteMacro(project.Variables["new_txt"].Value); // Обработка текста "Замена" project.Variables["new_txt"].Value = Macros.TextProcessing.Replace(text12, " " + " ", " ", "Text", "All");

Чистим код от тегов, меняем двойной пробел на ординарный, удаляем ссылки и т.п., чтобы превратить код в нормальное состояние. В любом случае вы должны понимать, что это не является окончательным решением для превращения HTML-кода в текст, так как вам нужно будет после вручную добавлять элементы, теги и т.п., но общий смысл ясен: убираем с помощью регулярных выражений лишнее.

[maxbutton id="3" text="ZennoPoster" url="/af-zenno" linktitle="External link | Внешняя ссылка" window="new" nofollow="true"]

Статья была полезна?

A
Admin

Блогер и преподаватель по темам фотографии, дизайна и цифрового творчества.

Все статьи