HTML文件属于void值吗,使用HTML :: TreeBuilder查找html文件中的值

找到与匹配内容

,在这种情况下,“磁盘空间使用情况”,然后找到下一个。

一旦你有一个元素树:

my $usage = $t->look_down(

_tag => 'td',

sub {

$_[0]->as_trimmed_text() =~ /^Disk Space Usage$/

}

)->right()->as_trimmed_text();

您可能想包装在一个eval块中,以防look_down没有找到匹配。

HTML :: Element中的树导航方法是有效使用HTML :: TreeBuilder的关键部分。

莫希尼问:“为什么不工作?”

(格式化由我添加)

use strict;

use warnings;

use HTML::TreeBuilder;

my $tree = HTML::TreeBuilder->new_from_file("index.html");

my $disk_value; my $disk_space;

for ($tree->look_down(_tag => q{tr}, 'class' => 'row-odd')) {

$disk_space = $tree->look_down(

_tag => q{td},

'class' => 'stats_left'

)->as_trimmed_text;

if ($disk_space eq 'Home Directory') {

$disk_value = $tree->look_down(_tag => q{td}, 'class' => 'stats_right')

->right()

->as_trimmed_text();

}

}

print STDERR "my home value is $disk_space : $disk_value\n";

look_down开始从你调用它的根节点,低头元素树(这些树木长得颠倒),并返回要么匹配的节点列表或第一个匹配节点,具体取决于上下文。

由于所有向下看的调用都在树上,因此每次循环都会重复找到相同的节点。

你的循环应该看起来更像是这样的:

my %table_stuff;

for my $odd_row ($tree->look_down(_tag => q{tr}, 'class' => 'row-odd')) {

$heading = $odd_row->look_down(

_tag => q{td},

'class' => 'stats_left'

);

$table_stuff{ $heading->as_trimmed_text() } = $heading->right()->as_trimmed_text();

}

该填充的哈希表与元素。

如果你只想要一个值,根本不要使用循环。 look_down已经充当一个循环。

my $heading = $t->look_down(

_tag => 'td',

sub {

$_[0]->as_trimmed_text() =~ /^Home Directory$/

}

);

my $value = $heading->right();

# Now $heading and $value have HTML::Element nodes that you can do whatever you want with.

my $disk_value = $value->as_trimmed_text();

my $disk_space = $heading->as_trimmed_text();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值