Подтвердить что ты не робот

Какие модули Perl подходят для сбора данных?

Девять лет назад, когда я начал разбирать HTML и свободный текст с Perl, я читал классический Data Munging с Perl. Кто-нибудь знает, планирует ли Дэвид обновить книгу или есть похожие книги или веб-страницы, где новые модули синтаксического анализа, такие как XML-Twig, Regexp-Grammars и т.д.?

Я предполагаю, что за последние девять лет некоторые модули по-прежнему так же хороши, как и раньше, некоторые из них обновлены, но с новыми интересными методами, а некоторые из них имеют лучшие замены. Например, по-прежнему Parse-RecDescent единственная опция для свободного синтаксического анализа текста или будет влиять на Perl 6 Regexp-Grammars его замена во многих сценариях?

Мне было четыре года без активного HTML, XML или бесплатного интеллектуального анализа данных с Perl, поэтому, вероятно, мой инструментарий в этой области немного устарел. Поэтому любая обратная связь для манипуляций HTML и DOM, извлечения/проверки ссылок, веб-тестирования, таких как Mechanize, XML-манипуляция и бесплатный синтаксический анализ текста, от людей, которые обновлены с нынешними модулями CPAN в этой области, будет более чем приветствуемой.

Некоторые новые дополнения к моему инструменту:

все еще в моем наборе инструментов:

4b9b3361

Ответ 1

Маловероятно, что когда-нибудь появится второе издание "Data Munging with Perl". Я боюсь, что экономика просто не складывается.

Но вы правы, что с 2001 года технология продвинулась очень долго, и есть много новых и улучшенных модулей, которые охватывают большую часть той же области, что и модули, обсуждаемые в книге. Например, я не могу Помните, что в последний раз я использовал XML:: Parser или XML:: DOM. Кажется, я использую XML:: LibXML для большей части моей работы с XML в наши дни. Кроме того, конечно, мое обсуждение баз данных является неполным, поскольку в нем не упоминается DBIx:: Class.

Возможно, было бы интересной идеей обновить часть этой информации через некоторые сообщения в моем блоге Perl. Я подумаю. Спасибо за идею.

Ответ 2

re: Parse::RecDescent <= > Regexp::Grammars

Дамиан Конвей цитируется, говоря, что Regexp::Grammars является преемником Parse::RecDescent. Но даже если Parse::RecDescent по-прежнему выполняет задание, вы продолжаете его использовать. Инструмент, который вы хорошо знаете, лучше, чем инструмент, который вы не знаете!

Однако, если производительность является ключевой проблемой, и вы используете perl 5.10+, тогда рассмотрите Regexp::Grammars.

Надежда Дэйва не против, но вот его первый Parse::RecDescent пример из Data Munging с Perl (11.1.1), преобразованный в Regexp::Grammars:

use 5.010;
use warnings;
use Regexp::Grammars;

my $parser = qr{
    <Sentence>

    <rule: Sentence>        <subject> <verb> <object>
    <rule: subject>         <noun_phrase>
    <rule: object>          <noun_phrase>
    <rule: noun_phrase>     <pronoun> | <proper_noun> | <article> <noun>

    <token: verb>           wrote | likes | ate
    <token: article>        a | the | this
    <token: pronoun>        it | he
    <token: proper_noun>    Perl | Dave | Larry
    <token: noun>           book | cat
}xms;

while (<DATA>) {
    chomp;
    print "'$_' is ";
    print 'NOT ' unless $_ =~ $parser;
    say 'a valid sentence';
}

__DATA__
Larry wrote Perl
Larry wrote a book
Dave likes Perl
Dave likes the book
Dave wrote this book
the cat ate the book
Dave got very angry

NB. Для тех, у кого нет книги, "Дэйв очень рассердился" - это недопустимое предложение:)

/I3az/