HTML :: ELEMENT未找到所有元素

时间:2018-12-04 22:50:53

标签: html perl module

我有以下HTML代码段:

<li class="result-row" data="2">
<a href="https://localhost/1.html" class="result-image gallery empty"></a>

<p class="result-info">
    <span class="icon icon-star" role="button">
        <span class="screen-reader-text">favorite this post</span>
    </span>

    <time class="result-date" datetime="2018-12-04 09:21" title="Tue 04 Dec 09:21:50 AM">Dec  4</time>

<a href="https://localhost/1.html" data="2" class="result-title hdrlnk">Link Text</a>

和此Perl代码(不是生产代码,因此不需要质量注释)

my $root = $tree->elementify();
my @rows = $root->look_down('class', 'result-row');

my $item = $rows[0];
say $item->dump;
my $date = $item->look_down('class', 'result-date');
say $date;
my $title = $item->look_down('class', 'result-title hdrlnk');

除了未定义$date之外,所有输出均与我预期的一样。

当我查看$item->dump时,似乎时间元素未显示在输出中。这是$item->dump输出的摘要,我希望看到一个<time...>元素。它显示的只是时间元素中的文字。

<li class="result-row" data="2"> @0.1.9.3.2.0
<a class="result-image gallery empty" href="https://localhost/1.html"> @0.1.9.3.2.0.0
<p class="result-info"> @0.1.9.3.2.0.1
<span class="icon icon-star" role="button"> @0.1.9.3.2.0.1.0
" "
<span class="screen-reader-text"> @0.1.9.3.2.0.1.0.1
"favorite this post"
" "
" Dec 4 "
<a class="result-title hdrlnk" data="2" href="https://localhost/1.html"> @0.1.9.3.2.0.1
.2
"Link Text..."
" "
...

我以前没有使用过HTML::Element。我rtfmed,没有看到任何标签排除项,我在软件包代码中搜索了标签白名单/黑名单(这没有意义,但也没有留下时间标签)。

有人知道为什么时间元素没有出现在转储中并且对它的任何搜索都没有结果吗?

为方便起见,其余的代码搜索并查找没有问题的元素,这似乎只是缺少的时间标签。

1 个答案:

答案 0 :(得分:2)

HTML :: TreeBuilder does not support HTML5 tags。考虑使用Mojo::DOM作为符合现行HTML标准的替代方法。由于您只展示了一段代码,所以我无法显示整个代码在Mojo :: DOM中的显示效果,但是等效于look_down的Mojo :: DOM为at(返回Mojo :: Collection arrayref)或{{1}}(返回找到的第一个元素或undef),都取CSS selector