如何使用Perl检索其中包含最大数字的链接?

XVi*_*usX 1 regex perl www-mechanize

我正在改进我为我下载了一些壁纸的旧脚本.我需要知道一个类别有多少页壁纸.每个链接都有页面编号作为其文本,即:

<a href="/planes-desktop-wallpapers/page/8">8</a>
<a href="/planes-desktop-wallpapers/page/9">9</a>
<a href="/planes-desktop-wallpapers/page/10">10</a>
Run Code Online (Sandbox Code Playgroud)

所以我需要捕获十号,但我不是很精通正则表达式,在这种情况下如何检索页数?

tnx提前!

hwn*_*wnd 5

您不希望HTML使用正则表达式进行解析.在这种情况下,使用正则表达式迟早会伪造您的数据.使用模块为您完成此操作会好得多.

在这个例子中,我们正在使用HTML::TreeBuilderList::Util.如果你想要在每个类别中最高,另一种方法是使用TreeBuilder :: XPath来查询特定部分中的所有内容.

use strict;
use warnings;
use HTML::TreeBuilder;
use List::Util qw( max );

my $data
   = '<a href="/planes-desktop-wallpapers/page/8">8</a>\n'
   . '<a href="/planes-desktop-wallpapers/page/9">9</a>\n'
   . '<a href="/planes-desktop-wallpapers/page/10">10</a>'
   ;

my $tr = HTML::TreeBuilder->new_from_content($data); 

my @vals =
     map { [ $_->attr('href'), $_->content_list ] } 
     max ( $tr->look_down( _tag => 'a') );

use Data::Dumper;
print Dumper \@vals;

__OUTPUT__
$VAR1 = [
          [
            '/planes-desktop-wallpapers/page/10',
            '10'
          ]
        ];
Run Code Online (Sandbox Code Playgroud)

如果你只需要文本(数字)而不是:

my @vals = map { $_->content_list } max ( $tr->look_down( _tag => 'a') );
Run Code Online (Sandbox Code Playgroud)