Разбор HTML в Perl - PullRequest
       18

Разбор HTML в Perl

13 голосов
/ 04 января 2011

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

Это может быть с любым модулем perl, если его можно установить из cpan, чтобы мне было проще. У меня нет большого опыта работы с Perl и парсингом HTML, поэтому любые указатели были бы очень полезны.

Спасибо:)

HTML Структура:

<code><pre><code>
<html>
<head>
</head>
<body>
 .....other elements
    <div id="messages">
        <div class="header"></div>
        <dl>
            <dd class="message unread mc-friend mc-message">This is just a random message, do not parse</dd>
            <dd id="msg2" class="message unread mc-message">
                Hello
            </div>
            <dd id="msg3" class="message unread mc-message">
                Hello
            </dd>
        </dl>
    </div>
</body>
</html>

Ответы [ 2 ]

18 голосов
/ 05 января 2011

Как-то так, быстро и просто:

#! /usr/bin/perl
use strict;
use warnings;

use Mojo::DOM;

my $html = "Your HTML goes here";

my $dom = Mojo::DOM->new;
$dom->parse($html);
my $skip;
for my $dd ($dom->find('dd[class*="message"]')->each) {
    print $dd->attrs->{id}, "\n" if $skip++;
}
8 голосов
/ 04 января 2011

Посмотрите на HTML :: Parser или еще лучше HTML :: TreeBuilder

Подробнее о TreeBuilder .

...