如何解析没有id或类信息的HTML?

时间:2013-01-30 02:19:08

标签: perl html-parsing

如果我有表格的HTML

<ol>
    <li>Cheeses
        <ol>
            <li>Red Leicester</li>
            <li>Cheddar</li>
        </ol>
    <li>Wines
        <ol>
            <li>Burgundy</li>
            <li>Beaujolais</li>
        </ol>
</ol>

我想把它解析成类似

的结构
{"Cheeses":["Red Leicester", "Cheddar"], "Wines":["Burgundy", "Beaujolais"]}

有很多&#34;教程&#34;关于如何使用HTML :: TreeBuilder或Mojo :: DOM等模块来解析HTML,但它们似乎总是依赖于使用&#34; id =&#34;或&#34; class =&#34;标签。我要解析的HTML没有任何ID标记或其他属性。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

我只有Mojo :: DOM的经验,不可否认,您可能会找到一个更好的模块,用于将XML转换为数据结构。如果您正在使用Mojo :: DOM,您可能希望查看Mojo :: DOM对象下的树结构:

#!/usr/bin/env perl

use strict;
use warnings;

use Mojo::DOM;
use Data::Dumper;

my $dom = Mojo::DOM->new(<<'END');
<ol>
    <li>Cheeses
        <ol>
            <li>Red Leicester</li>
            <li>Cheddar</li>
        </ol>
    <li>Wines
        <ol>
            <li>Burgundy</li>
            <li>Beaujolais</li>
        </ol>
</ol>
END

print Dumper $dom->tree;

通过一点点按摩,你可以将它变成你想要的形式。也许某人有一个模块可以直接从HTML(可能实际上是XML)到结构。