Программа TextPipe Pro предоставляет огромные возможности по обработке текстовых файлов.
Но не смотря на довольно большое количество учебных и демонстрационны материалов, освоить эту программу не всегда легко удаётся.
Для того, чтобы продемонстрировать на конкретном примере возможноси программы TextPipe Pro, я подготовил этот небольшой мануал.
Он не даёт ответов на все вопросы, но он поможет тем, кто начинает осваивать эту программу, сделать в ней первые шаги. А дальше, поверьте, освоение пойдёт гораздо проще.
Все рабочие материалы к этому мануалы я залил одним файлом на рапиду. Можете скачать отсюда.
Я буду ссылаться в тексте на некоторые файлы из этого комплекта. Но на самом деле качать его не обязательно - если повторять по шагам все описанные операции, всё будет и так понятно.
Для чего это может быть нужно?
Например для сбора текстов, их дальнейшей обработки (синонимайзинг, рерайт, перевод) и наполнения своих сайтов.
Возьмём случайную статью. Например эту: http://stroybm.ru/articles/kadry/20090624134642/index.html
Исходный код в приложенном файле "html_code_text.txt"
Для начала нужно выделить код только статьи из кода всей страницы. Это решается заменой. И я с этим сам всегда мучаюсь.
Суть простая. Найти какой-то неповторимый элемент страницы ДО основной статьи и сразу ПОСЛЕ неё.
И потом заменить по типу "Всё до, включая..." и потом "Всё после начиная с..."
В нашем случае уникальный элемент "ДО", это
Чтобы TextPipe заменил всё от начала страницы до этого элемента (включая его), нужно задать ему команду:
Указать в поле для данных:
Выбрать Action -> Remove
И всё. Он удалит нам всё до этой строки.
Скрин (все картинки кликабельны):
Теперь пройдём по поряду по коду этой строки, чтобы было понятно для чего тут что.
Итак. Ещё раз. Оригинал уникальной строки:
а изменённая строка:
. - это любой знак, т.е. мы говорим программе: "Ищи любой знак"
* - это любое количество, т.е. мы добавляем программе "Ищи любое количество любых знаков"
- это наш уникальный код, в который вставлен экранирующий символ "\"
этот знак говорит программе - то что стоит за этим знаком, это не программный код (не спецсимвол для макроса), а обычный текст.
Т.е. программа при обработке такой строки знаки "\" просто выкидываются.
Я экранирую всё что может быть расталковано как спецсимволы. Фактически, список этих символов определён, его можно изучить по help`у.
Но если есть сомнение, спецсимвол в коде или нет - его лучше заэкранировать. Это позволит измежать массы возможных проблем с отладкой макроса.
Проверить что получилось на промежуточном этапе можно запустив учебный прогон:
Теперь нужно удалить всё лишнее после текста.
В этом случае уникальный элемент текста:
Можно заметить, что такой элемент встречается несколько раз, но для нас это не критично, т.к. он встречается сразу после текста, а не внутри него,
так что мы дадим программе задачу найти первый попавшийся элемент и удалить всё, что идёт за ним.
Это также делается при помощи команды: Поиск и замена -> Найти схему (стиль old egrep)
Вот так будет выглядеть команда:
В итоге при учебном прогоне получаем текст самой статьи, обрезанный спереди и сзади (файл text_article_cutted_front_end.txt).
Но в нём остаётся много мусора.
Ссылки, пустые строки.
Это мы сейчас оперативно и просто почистим.
Для того, чтобы убрать вообще все тэги в статье (к сожалению, это "убьёт" и все картинки и оформление, которое возможно, хотелось сохранить).
Это самый простой способ. Универсальный. Для каких-то конкретных случаев можно придумать более сложный вариант очистки кода, но пока не будем углубляться.
Удалить -> HTML and XML -> Remove all tags
Ну и сразу удалим пустые строки из статьи, если они нам не нужны.
Удалить -> Пустые строки
В итоге получаем вот такой вот обработанный текст (файл text_article_cutted_2.txt)
В этом файле всё ещё остаётся очень много мусора.
Например:
Также есть табуляции, и прочие мешающие нам элементы.
Добавим ещё пару команд:
Поиск и замена -> Найти точно
Вводим то, что нужно заменить. Конкретно:
В Action выбираем Remove
Либо можем выбрать Replace и заменить на пробел. Но в нашем случае Remove будет корректнее.
Обязательно проверяем, чтобы не была поставлена галочка "Замена только первого". Иначе не весь текст будет очищен от этого символа.
А также добавляем команду удаления многих пробелов идущих подряд:
Удалить -> Многие пробелы
То что получилось, уже гораздо лучше, но всё ещё содержит не нужные нам строки, такие как:
А также есть поробелы в начале строки, и пустые строки в конце статьи. Ну и автор. Нужен он нам или нет? Покажу пример, когда не нужен.
То что осталось проще всего обработать удалением строк по номерам.
Лично я так и делаю. Наверняка есть более элегантные и универсальные способы. Но у меня получается этот. Его и продемонстрирую.
Удалить -> Удалить строки -> Удалить диапазон строк
Указывае нужные диапазоны. Чтобы удалить первую пустую строку это будет 1 и 1:
Для блока, идущего после названия статьи (имеем ввиду, первая строка уже удалена, строки сместились и отсчитывать теперь нужно от новой первой строки - названия, т.е. со 2-й по 7-ю строки):
Теперь удаляем строки с конца файла. Если хотим убрать и данные об авторе, убираем последние 6 строк. Если хотим оставить информацию об авторе, тогда нам надо удалить 4 строки с конца файла.
Как финальный штрих - убираем пробелы в начале строк:
Удалить -> Пустоты в начале строки
Всё, вот такой вот итоговый текст мы получили: (файл text_article_final.txt)
Если его закидывать в Wordpress в виде HTML, то больше чистить его не нужно.
Если будем использовать его как текст, то нужно вычистить также такие символы:
ну и другие, которые остались в тексте после всех наших манипуляций.
Делается это также:
Поиск и замена -> Найти точно
Вводим то, что нужно заменить.
В Action выбираем Remove
Я это делаю не всегда.
Т.к. в большинстве сучаев такие элементы мне уже не мешают.
Вот, собственно, и всё. Можно в синонимазер статью закидывать, можно сразу публиковать.
Для того, чтобы статья сохранилась в текстовый файл, нужно будет настроить вывод.
Вместо "Выводить в буфер обмена" (последняя строка макроса), заменяем настройки как показано на рисунке:
Все настройки, по моему, вполне понятны. Варьировать можно под свои нужды.
А для того, чтобы TextPipe знал что ему, собственно, обрабатывать, все исходные файлы со статьями (в нашем случае это 1 файл) нужно добавить в список файлов в обработке:
Для этого нужно просто перетащить нужный файл из проводника в окошко TextPipe Pro.
Кроме того, как в моём примере, можно скопировать содержимое обрабатываемой страницы в буфер обмена Windows и запустить обработку.
Настраивается источник для обработки в самой первой строке фильтра:
Проверяем как всё работает - запускаем реальный прогон.
В сервисном окошке нам покажут все проводимые операции:
Если при обработке возникнут ошибки - они будут показаны красным.
Обработанный материал сохраняется в текстовом файле в папке, которую мы указали.
Если мы обрабатывали данные из буфера - это будет 1 файл. Если брали список файлов - то несколько.
Можно также все файлы сохранять в 1 итоговый текстовый файл. Это настраивается в последнем шаге макроса:
Один файл вывода (объединить файлы вывода вместе).
Кстати, есть ещё два момента.
Если сначала сделать удалить все пробелы в начале строк, а потом убрать пустые строки, то весь текст получится одним большим куском, без пустых строк между абзацами.
Для восприятия человеком это не так удобно. Но для говноблогов, доров и т.п. - вполне подойдёт.
Тогда немного меняется удаление лишних строк. Но тут, как говорится, кому как удобнее.
И второе - наш макрос мы составили для обработки конкретного кода, конкретной страницы.
Проделывать такую работу ради создания макроса для обработки одной единственной страницы - безсмысленно.
Но в большинстве случаев, статьи на сайте имеют типовой формат. Это относится к блогам, каталогам статей и т.п.
Там, где используется какая-то CMS, почти всегда все статьи имеют одинаковый формат (или очень близкий), поэтому написав макров для обработки одной статьи, мы автоматически имеем возможность обработать все статье и с этого сайта.
Но только с этого сайта. Для других нам придётся немного (а иногда полностью) менять код макроса, создавая его по тому-же принципу, как я расписал выше.
Давайте проверим.
Берём ещё какую-нибудь статью с того-же сайта. Например:
http://stroybm.ru/articles/nedvijimost/20090610092658/index.html
Статья, как и в первом случае, выбрана совершенно случайно.
Берём её код (файл html_code_text_2.txt) и помещаем в зону учебного прогона.
Делаем учебный прогон ничего не меняя в настройках макроса.
Сделали и получили отлично обработанный текст (файл text_article_final_2.txt).
Вуаля! У нас готов макрос для обработки всех статей с сайта http://stroybm.ru/.
Не плохо.
Готовый макрос я также залил (файл macros.fll).
Вот, собственно, таким образом можно обрабатывать тексты для наполнения своих сплогов.
16 комментариев:
Xupypr пишет...
я хожу другим путем )
ТоталКомандер - ааа.тхт - Ф3 - Стрл+А - Стрл+С - Еск - Ф4 - Стрл+А - Стрл+В
как то так )
Xupypr (извини, потёр твой каммент, т.к. ссылка не твой фарма-шоп, ну просто никак не подходит для моего блога), было бы очень интересно поподробнее познакомиться с твоей методикой.
Ты мог бы чуть подробнее всё то-же самое расписать. В идеале - с примером.
Т.к. если TotalCommander это быстрее и проще - то можно было бы использовать и такой вариант.
И как ты удаляешь ссылки из текста и прочий мусор?
А как сделать замену каждой строки файла, находящейся в определенных тегах (например http://...) на строку из другого текстового файла (список url)?
Socialink,
Разных всяких вариантов, как обрабатывать файлы огромное количество.
Всё очень доходчиво расписано в мануале, а также в этой ветке было очень много практических примеров разобрано, как конкретно использовать программу:
http://www.nulled.ws/showthread.php?t=8222
Рекомендую к изучению.
Здравствуйте. необходимо сделать такое действие в TextPipe:
имеется список:
1
2
3
4
имеется второй список:
a
b
с
d
e
f
g и тд
Необходимо дублировать каждую строчку первого списка определенное количество раз и соединить со вторым списком, чтобы получился такой вид:
1 a
1 b
1 c
2 d
2 e
2 f
3 g
3 k
3 l
4 m
4 n
4 и тд
возможно это сделать, может быть в 2 шаблона?
спасибо.
Я бы это сделал при помощи php-скрипта.
Не сталкивался с такой задачей.
На нулледе задай вопрос - там ветка по TextPipe - отвечают быстро и по делу.
Удачи.
Добрый день! Не подскажете, как сделать простейшую (наверное) операцию: удалить всё что находится между парами конкретных слов.
Допустим, удалить всё, что между A и B.
ashdajd a jijifswfsdf b lossdfsdfsd a podsfodsdfsdf b
>>
ashdajd a b lossdfsdfsd a b
Сделайте поиск и замену по регулярному выражению.
Спасибо за статью, подробно и понятно написал.
А можно с помощью программы сделать так, чтобы бралось строка из CSV файла (рандомно или по очереди) и добавлялись в txt файл в конец, потом бралась еще строка (без повторов) из CSV и в новый txt.
На нулледе не то что тему создать, так там даже не пускают в этот раздел.
Заранее спасибо.
Да, скорее всего это возможно.
Но я сейчас использую для решения подобных задач ZennoPoster.
Очень удобная штука.
Уже вторую ночь мучаюсь. Вот один из примеров:
- надо удалить вот эту строку: <_in_put ty_pe="sub_mit" na_me="submitBuy" va_lue="КУПИТЬ"_>
Выбираю фильтр "Поиск и замена", в поле "Найти" вставляю кусок кода, тип поиска - точно, действие "Удалить".
На учебном прогоне, всё работает. Когда нажимаю кнопку "Делать (реально)", ничего не меняется.
Я сталкивался с подобной проблемой. Решение оказалось очень простым - смена кодировки исходных файлов.
Т.е. у меня файлы некорректно обрабатывались, допустим (точно уже не помню) в ANSI, но после перекодировки в UTF-8 заработали.
Есть программы для массовой смены кодировки. Сейчас название не вспомню.
Можно для пробы также в Notepad++ сделать перекодировку.
Кодировки -> Преобразовать в UTF-8
Если не получится - пиши, будем разбираться в чём ещё может быть дело.
Спасибо за совет! Всё получилось. Проблема была в кодировке.
Спасибо за статью: очень познавательно! Подскажите пожалуйста, может ли textpipe обьединять большое количество файлов в 1?
Для объединения большого количества файлов в один я его не использовал. Но, думаю, он вполне с этим справится.
Анонимный пишет...
Добрый день! Не подскажете, как сделать простейшую (наверное) операцию: удалить всё что находится между парами конкретных слов.
Допустим, удалить всё, что между A и B.
ashdajd a jijifswfsdf b lossdfsdfsd a podsfodsdfsdf b
>>
ashdajd a b lossdfsdfsd a b
У меня таже проблема с этим. Какие фильтры надо применять?
Ведь задача не простая, потому что между А и Б могут быть разные символы, разной длины, а не регулярное выражение
Эта задача решается (и довольно просто) автоматической заменой по регулярному выражению.
Составляете регулярное выражение в котором указываете что искомый текст начинается с A и заканчивается B.
Это, по идее, можно сделать, если эти A и B уникальны и не повторяются в строке между ними.
Не подскажу конкретный код - давно не использую программу.
Но на форуме поддержки, уверен, можно найти информацию по регулярным выражениям.
А дальше найденный кусок кода A ...(что-угодно)... B
заменяем во всём тексте на A_пробел_B
Где _пробел_ - это обычный пробел. Или вообще ничего, если удалить надо полностью.
Такая автозамена по регулярному выражению будет равносильна удалению ненужного кода.
Но если внутри этого текста встречаются A или B - тогда такой подход не подойдёт и придётся искать другое решение.
Отправить комментарий