html 删除选中指定div,HTML :: TagFilter根据类删除div

我正在尝试使用perl脚本从服务器上的静态html文件中提取内容。我想拉出特定div的内容。我知道div的类名(“getme”)。

我可以使用HTML :: TreeBuilder-> look_down来访问div。如何删除div标签并仅获取其中的内容?

示例HTML

Some Header

More text

text text text
...

到目前为止

Perl

use strict;

use warnings;

use HTML::TreeBuilder;

use HTML::TagFilter;

my $unique_filename = '/path/to/saved/files/extracted_divs/' . get_timestamp();

my $guid_counter = 0;

my $field_sep = "|";

open FILEOUT, ">>", $unique_filename or die $!;

print FILEOUT "guid|published|url|title|body\n";

foreach my $file_name (@ARGV) {

my $tree = HTML::TreeBuilder->new;

my $filter = HTML::TagFilter->new(deny => { div => {class => ["getme"]} });

$tree->parse_file($file_name);

for my $subtree ($tree->look_down(_tag => "div", class => "getme")) {

#my $html = $filter->filter($subtree->as_HTML);

my $html = $subtree->as_HTML;

#steamline HTML

$html =~ s/(?

#echo file name to screen so we know something is happening

print $file_name . "\n";

#replace slashes with spaces

my $file_url = $file_name;

$file_name =~ s/\//-/g;

#remove ".html"

$file_name =~ s/.html//g;

#echo info to output file

print FILEOUT $guid_counter++ . $field_sep . time . $field_sep;

print FILEOUT $file_url . $field_sep . $file_name . $field_sep;

print FILEOUT $html;

}

$tree = $tree->delete;

}

close (FILEOUT);

过滤器只删除class属性。是否可以删除整个标记,或者有更好的方法吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值