我有一段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
时,看起来时间元素没有出现在输出中。下面是我期望在其中看到<time...>
元素的$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。我做了out检查,没有看到任何标签排除,我在包代码中搜索标签白/黑名单(这没有意义,但也没有省略时间标签)。
有人知道为什么时间元素没有出现在转储中,搜索它也没有找到它吗?
作为一个fyi,其余的代码搜索并找到元素没有问题,它只是看起来缺少的时间标签。
发布于 2018-12-05 09:02:36
:TreeBuilder does not support HTML5 tags。考虑将Mojo::DOM作为与现有的HTML标准保持一致的替代方案。我不能展示使用Mojo::DOM的整个代码的样子,因为您只显示了一部分,但是look_down的Mojo::DOM等价物是find
(返回Mojo::Collection arrayref)或at
(返回找到的第一个元素或未定义的元素),两者都接受CSS selector。
https://stackoverflow.com/questions/53622635
复制相似问题