May 2025

S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031

(no subject)

Date: 2012-02-14 06:09 am (UTC)
From: [identity profile] esirnus.livejournal.com
научите парсер писать, и вообще, на чем пишите?

(no subject)

Date: 2012-02-14 06:32 am (UTC)
From: [identity profile] sergio-az.livejournal.com
Спокон веков парсеры пишутся на Перле, молодой человек !
Курите "регулярные выражения" и будет вам щасте.

(no subject)

Date: 2012-02-14 07:10 am (UTC)
From: [identity profile] esirnus.livejournal.com
да парсеры пишутся на всем что угодно, хоть на плюсах, хоть на питоне.

(no subject)

Date: 2012-02-14 08:44 pm (UTC)
From: [identity profile] klark973.livejournal.com
На перле было бы быстрее, да. Но я им не особо владею, поэтому мне сподручней на баше, php либо на Си, если задачка похитрее и на скорость. regex на сях тоже рулит. Конечно можно показать пару приёмов. Но обучать в данном случае, извините, не моё кредо. Например, надо найти все сообщения, в которых есть приатаченные PDF'ы:

grep -iE '^Content\-Type\: application\/pdf' *.eml | cut -f1 -d: | sort -u

Метаданные из PDF'ов можно вытащить через pdfinfo, конвертировать в текст содержимое PDF'а -- pdftotext. Обе тулзы входя в GNU popler-utils. Полученный текст фильтруется обычным grep'ом.

Конвертировать в текст всевозможные DOC/XLS/RTF можно через unoconv -- питоновский скрипт, входящий в LibreOffice/OpenOffice. Для грубой обработки его достаточно. Если нужно более точно, включая всевозможные встроенные фреймы с текстом тоже вытащить, unoconv надо использовать для промежуточного конвертирования в ODS/ODT, а их уже обрабатывать собственным парсером -- это ведь обычный ZIP с файлами XML. Зная стандарт ODF, можно вытащить всё что угодно. Но т.к. обработка пакетная в цикле, я использую свою надстройку с тулзой timeout. Ибо после нескольких десятков успешных операций офис/unoconv начинает тупить, авторам баг известен.

Обрабатывать почтовые сообщения тоже не особо сложно, если знаете RFC. Опять же полно готовых библиотек и утилит. Например, для PHP есть php-mime-mail-parser. Короче, скрипт можно написать на баше, пхп, пёрле, питоне и вообще к чему больше душа лежит. :)

(no subject)

Date: 2012-02-15 08:22 am (UTC)
From: [identity profile] esirnus.livejournal.com
спасибо за развернутый ответ.
Я просто как-то мучался с решением, как парсить XLS файлы, используя С/С++. Т.к. задача была вторична, то забросил, сейчас вспомнил и задался вопросом)))

Expand Cut Tags

No cut tags

Style Credit