我试图用perl解析以下
HTML结构.我需要选择包含类消息的所有dd元素和一个id.
所有我想要的脚本要循环遍历所有的dd元素,并打印出dd元素的id,但是它需要忽略第一个dd元素,因为它是静态的,不会改变.
所有我想要的脚本要循环遍历所有的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>
解决方法
这样的事情,快速简单:
#! /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++; }