在perl中进行HTML解析

Jac*_*ack 13 html perl html-parsing

我正在尝试使用perl解析以下HTML结构.我需要选择包含类消息的所有dd元素以及id.我希望脚本要做的就是循环遍历所有dd元素并打印出dd元素的id,但它需要忽略第一个dd元素,因为它是静态的并且不会改变.

它可以与任何perl模块一起使用,只要它可以从cpan安装,以方便我.我对perl和解析html没有多少经验,所以任何指针都会非常有用.

谢谢 :)

HTML结构:

<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>
</pre></code>
Run Code Online (Sandbox Code Playgroud)

Grr*_*rrr 18

像这样的东西,快速简单:

#! /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++;
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*ath 8

看看HTML :: Parser或更好的HTML :: TreeBuilder

有关TreeBuilder的更多信息.