HTMLHyperText Markup Language является разметкой для страниц в браузере, но все привыкли обращаться к нему как к определенному виду синтаксиса для создания этих самых страниц сайта. Чтобы конвертировать обратно HTML-код в текст, существуют определенные онлайн-редакторы, возможно, программы (я не в курсе последних), но проблема остается одна - ими не очень то удобно пользоваться, особенно когда вместе с ними идут ограничения на количество введенных символов, премиум-подписка и т.д.
Мы с вами напишем свой собственный скрипт для программы ZennoPoster: перевод HTML верстки в обычный текстовый вид, который нужен, например, для последующей правки текстовых данных, или для лучшего визуального восприятия. В любом случае, данный код пригодится нам для дальнейших задач, а сама схема действий позволит понять как справляться с очередными вызовами!
[maxbutton id="3" text="ZennoPoster" url="/af-zenno" linktitle="External link | Внешняя ссылка" window="new" nofollow="true"]
Как можно видеть из скриншота ниже, мы "запихаем" все действия в один так называемый кубик, где будут указаны операции типа поиска по регулярным значениям и замена текста на их основе. Кроме этого, мы укажем путь к файлу с данными и возьмем их для примера, чтобы затем после выполнения всех функций записать их в отдельный источник.
Главным событием для нас будет являться универсальность происходящего: чтобы можно было использовать скрипт в дальнейшем и применять его по отношению к другим экшенам легко и без каких-либо усилий.
Код - перевод 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"]
Статья была полезна?