Ru-Board.club
← Вернуться в раздел «Программы»

» TextPipe

Автор: kvazigorynich
Дата сообщения: 24.04.2013 15:21
Может кто в курсе как это сделать.

имеем:

Код: pushbyte 3
pushbyte 4
Автор: KUMICH
Дата сообщения: 22.07.2013 09:54
Как в программе сделать экстракт сразу из нескольких мест за один проход, который разделены мусором, чтобы не удалять мусор (это не всегда получается)

И второе, можно ли в программе задать путь по которому нужно вытянуть нужную информацию, скажем

HTML[1].BODY[1].CENTER[1].TABLE[1].TBODY[1].TR[1].TD[1].TABLE[3].TBODY[1].TR[1].TD[2].TABLE[1]
Автор: evoroz
Дата сообщения: 22.07.2013 21:28
KUMICH
1. Мне кажется, только написав процедуру на VBScript.
2. Сочинить регулярное выражение.
Автор: adgeuk
Дата сообщения: 28.08.2013 17:04
Извлекаю информацию с сайта биржи труда.
Используя фильтры смог извлечь:

1. адреса эл. почты
2. номера вакансий (состоит из 6 цифр)

Увы, смог сделать это только в двух раздельных заданиях.
Соответственно получил два текстовых файла:

1. только адреса эл. почты
2. только номера вакансий

Использовал следующие фильтры:

1. Оставить согласующиеся строки <td>\d\d\d\d\d\d</td>
2. Извлечь ареса эл. почты

Если использовать эти два фильтра в одном задании, то результат - пустой файл.
А нужно чтобы результат был единым и я видел какому номеру вакансии соответствует тот или иной адрес эл. почты.

Вопрос:
Как сделать чтобы оба результата со страницы прописались вместе?
Справку читал, ответа не нашел.

Вид исходной страницы поиска:
Автор: evoroz
Дата сообщения: 28.08.2013 21:08
adgeuk
http://rusfolder.com/37798243 (фильтр)

Говорят, что Микеланджело спросили: как он создает свои скульптуры?
Ответ: Я беру камень и отсекаю все лишнее.

Здесь принцип тот же.
Удаляем начало до адреса эл.почты, удаляем лишний код сзади, потом между почтой и номером. В конце удаляем теги. Остается, что надо. Недостаток метода в том, что удаляются конкретные строки - теоретически разные страницы могут иметь разное кол-во строк. Я попробовал несколько страниц - работает корректно.
Автор: adgeuk
Дата сообщения: 29.08.2013 01:37
evoroz

Супер!
Сердечно благодарен!


Автор: adgeuk
Дата сообщения: 30.08.2013 15:17
Логика построения фильтров доходит туго, потерялся в экспериментах.

К примеру,
ставлю - удалить 40 строк от начала документа - удаляет верно,
ставлю удалить 150 строк - удаляется почти все,
хотя судя по исходному коду, там около 400 строк на странице.
Вот почему так?

Подскажите, как будет выглядеть фильтр для удаления всего до первого на странице emaila?
Вариант с удалением определенного кол-ва строк довольно хорош, но не универсален.
Автор: evoroz
Дата сообщения: 30.08.2013 19:29
adgeuk

Цитата:
ставлю - удалить 40 строк от начала документа - удаляет верно, ставлю удалить 150 строк - удаляется почти все
Не видя - трудно сказать что не так. Если последовательно фильтры стоят - удалит 190 строк. У меня строк - 302.
Цитата:
Подскажите, как будет выглядеть фильтр для удаления всего до первого на странице emaila?
Мое решение загрузите и посмотрите первую строку.

Цитата:
Вариант с удалением определенного кол-ва строк довольно хорош, но не универсален.

Да - не универсален. Однако, поскольку страницы как правило пишутся или генерируются по некоему шаблону - он прокатывает. Для универсальности требуется писать регулярные выражения.
Например: заменить (.*)<strong>By E-Mail:</strong>(.*)
на <strong>By E-Mail:</strong>$2 означает, что Textpipe должен найти вхождение <strong>By E-Mail:</strong> и заменить его на тоже + то, что после вхождения - это $2. $1 - текст от начала до <strong>By E-Mail:</strong> в условии замены не упоминается и - отсекается, т.е. страница будет начинаться с <strong>By E-Mail:</strong>. Вот как-то так.
Подработал фильтр: http://rusfolder.com/37831246
Автор: adgeuk
Дата сообщения: 30.08.2013 21:46
evoroz

С дополненным фильтром пока не разбирался, сначала хочу понять более простое.

Вот страница: Fas.ie
В исходном коде 291 строка.

Ставлю фильтр Exclude 39 Lines from start of file - исключает первых 39 строк.
Ставлю фильтр Exclude 250 Lines from start of file - в результате пустой файл.
Использую лишь один фильтр.

Автор: adgeuk
Дата сообщения: 31.08.2013 16:20
Только сейчас обратил внимание,
если поместить страницу в зону пробного прогона, то кол-во строк меняется!

Там их только 175 вместо 291.
Теперь понятно, почему при удалении 150 строк оставалось лишь пара десятков.

Причем, страница не просто обрезана на 175 строке, а вообще разнится по содержанию с оригиналом.
При поиске по зоне прогона не нахожу выражений присутствующих на сайте.
К примеру, заголовок вакансии, который прописан на странице большим жирным шрифтом отсутствует в зоне прогона.
При этом нет ни одного активного фильтра.
Это вообще сбивает с толку.
Автор: evoroz
Дата сообщения: 31.08.2013 18:30
adgeuk
В html формально строка может быть очень длинной и программами просмотра делиться на несколько.
Символ конец строки является действительным концом. Что касается поиска слов в textpipe он реализован просто. Набираешь слово, внизу есть переключение вперед - назад. Программа ищет только в указанном направлении от положения курсора, не проводя поиска по всему тексту.
Автор: adgeuk
Дата сообщения: 01.09.2013 01:54
Проверил внимательно.
Добавляю в TextPipe через меню "Инструменты - Поместить образец в зону пробного ввода".
Текст совпадает где-то до 90-ой строки.
Дальше чудеса, заголовка так и не нашел, зато есть строки которых в браузере нет.

Все что написано в теге <p> вообще отсутствует в TextPipe, а это и есть для меня самое главное описание.
Ломаю голову дальше, жаль не знаком пока с HTML, тут бы пригодилось.

Автор: evoroz
Дата сообщения: 01.09.2013 11:20
adgeuk
Посмотрел и удивился: браузеры сохраняют код страницы по разному. И различия существенны.
Я писал под оперу.
Вывод из этого - писать регулярные выражения.
Главный принцип - выкинуть лишнее!
Фильтры пишем на основе Replace -> Find Pattert (perl style)
(.*)Нужный текст(.*) заменить на Нужный текст$2 Иногда используется (.*?)
Автор: adgeuk
Дата сообщения: 01.09.2013 12:55
Подкидываю Textpipe ссылку - программа не видит всего кода.
Однако, если сначала скачать страницу при помощи Offline Explorer и подкинуть в TextPipe,
то видит все идентично (на беглый взгляд) браузеру Firefox.
Автор: adgeuk
Дата сообщения: 02.09.2013 03:28
evoroz

Цитата:
(.*)Нужный текст(.*) заменить на Нужный текст$2 Иногда используется (.*?)
Не сразу, но дошло

В принципе, того что есть уже достаточно, но есть еще вопрос.
Если перед эмайлом нет устойчивого выражения, то как сохранить сам Email удалив только текст перед ним или после?
Ведь если использовать фильтр Find Pattert (perl style) то найденный Email не получится заменить на самого себя, так как заменить можно лишь на конкретное выражение.

Автор: evoroz
Дата сообщения: 02.09.2013 08:42
adgeuk

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

А e-mail как найдется? Разве не через регулярное выражение? Соответственно заменяем найденное на $.
Автор: Kolobkovskiy
Дата сообщения: 02.09.2013 12:32

Цитата:
Посмотрел и удивился: браузеры сохраняют код страницы по разному. И различия существенны.
Если обрабатывают по-разному, то почему должны сохранять одинаково? Видимо, у разработчиков разных браузеров разные представления о том, что есть важно в коде, а чем можно пренебречь.
Автор: adgeuk
Дата сообщения: 02.09.2013 18:49

Цитата:
Соответственно заменяем найденное на $.

Но тогда просто вместо найденного email выдает значек доллара, сам email опять же пропадает.
Автор: evoroz
Дата сообщения: 02.09.2013 21:50
adgeuk
Не совсем так. Когда я написал $, я имел в виду, что за ним будет цифра - $1, например.
Выражение (что-то)(что-то)(что-то) означает, что весь текст соответствует $0, первая группа (что-то) соответствует $1, вторая - $2 и третья - $3.
Ну ладно, если трудно - забили.
Полезная статья - http://habrahabr.ru/post/55820/ про валидацию e-mail.

Remove -> Remove non-matching lines забиваем выражение [EmailAddress or ('<td>'6 digits'</td>')] и выбираем под строкой EasyPattern. Так проще


Автор: adgeuk
Дата сообщения: 02.09.2013 23:36
С долларом придется разбираться, так как необходимо в конечном итоге получить текстовой файл вида:

123456 <email@email.com>
123456 <email@email.com>
и т.д
Автор: evoroz
Дата сообщения: 02.09.2013 23:49
adgeuk
Может быть полезно такое

Есть 123456 <email@email.com>

В Replace -> Replace Pattern (Perl Style) пишем
(\d\d\d\d\d\d) (.*?) в окне замены
$2 $1

После прогона получаем: <email@email.com> 123456
т.е. меняем местами.
Автор: adgeuk
Дата сообщения: 03.09.2013 23:15
Спасибо.
Все вышло чудно, имею готовый файл для массовой рассылки через почтовый клиент.
Последнее что нужно сделать:

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

А впрочем, можно воспользоваться сортировкой текста: http://textmechanic.com/Sort-Text-Lines.html
И потом удалить ненужное руками, то на то и выйдет.
Ура!
Автор: yanko12
Дата сообщения: 10.09.2013 05:51
2All

Он в rar - архивах текст менять умеет ?

Если нет - его аналоги какие-то существуют с такой фичей ?
Автор: yozhic
Дата сообщения: 05.12.2013 20:36
Народ, подскажите, пожалуйста, просто некогда тонны мануалов курить ради задачи в неколько секунд. Нужно поменять кодировку в файлах. Загружаю список обычных текстовых файлов, применяю фильтр, нажимаю Go - все файлы, блин, отсеиваются как бинарные. Что сделать, чтобы программа поняла, что это текстовые файлы?
Автор: evoroz
Дата сообщения: 05.12.2013 22:16
yozhic
Первый фильтр (по умолчанию) называется Файл ввода:пропуск двоичных.
Меняешь двоичные файлы: пропуск на обработка.
Автор: yozhic
Дата сообщения: 08.12.2013 18:13
evoroz
Спасибо, разобрался. Смущение ещё было из-за того, что у меня в версии 9.1.0 после таких действий некоторые файлы делались нечитаемыми. Но в новой, 9.5.3, всё корректно отрабатывает.
Автор: regga5
Дата сообщения: 25.01.2014 12:27
Приветствую

Подскажите пожалуйста.

Как удалить строки, которые содержат только цифры?
Как удалить строки, в которых есть "шт" (только целые слова и "шт" сразу после символов, например 100шт, 2шт)?
Как удалить строки которые начинаются с символов? Например "01234567890" или "5448вебмастер" или "348953948 вебмастер"
Как просеять строки по фильтру а-я, a-z, 0-9? Оставив строки, в которых нет каких либо любых спец. символов, а только буквы и символы.
Автор: Alex_Piggy
Дата сообщения: 25.01.2014 14:12
Доброе время, regga5
Регулярные выражения perl, которые описывают Ваши случаи (без кавычек)- "^[0-9]+$" "[0-9]шт" "^[0-9]" "[^a-zа-я0-9]". Предположил, что в 2 и 3 случае под "символами" понимаются цифры.
Filters\Remove\Remove lines\Remove matching lines
PS. Для такого достаточно sed
sed -e "/^[0-9]\+$/d" -e "/[0-9]шт/d" -e "/^[0-9]/d" -e "/[^a-zа-я0-9]/d" input.txt > output.txt
Автор: D1D1D1D
Дата сообщения: 29.01.2014 04:42
Приветствую!

Нельзя ли случаем с помощью программы производить множественные замены по списку из файла (по принципу: "искомое-разделитель-заменяемое")?
Автор: Alex_Piggy
Дата сообщения: 29.01.2014 08:37
Доброе время, D1D1D1D
"Filters\Replace\Import a search/replace list\Load *** file"
*** - CSV (разделитель запятая), TAB (разделитель табуляция), Excel file

Страницы: 12345678

Предыдущая тема: Программы для решения уравнений


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.