perl - 使用组合脚本解析错误

perl - parse error using composed script

提问人:Mobrine Hayde 提问时间:4/26/2018 更新时间:4/26/2018 访问量:158

问:

当我使用这个脚本时,它工作正常 我使用HTML::TreeBuilder从站点解析html

#!/usr/bin/perl -w
use LWP::Simple;
use HTML::TreeBuilder;

use open ':std', ':encoding(UTF-8)';
my $base='https://myanimelist.net';
my $url="/anime/35849/Darling_in_the_FranXX";
my $page = get($base.$url) or die $!;
my $p = HTML::TreeBuilder->new_from_content( $page );

my @trips= $p->look_down(_tag=>'span',itemprop=>'description')->as_text;
foreach my $trip (@trips){
   print $trip;
}

但是当我将其添加到此脚本中时,它不起作用

#!/usr/bin/perl -w
use LWP::Simple;
use HTML::TreeBuilder;
my $ua = LWP::UserAgent->new();


my $mal = "https://myanimelist.net/search/all?q=darling";
my $response = $ua->request(HTTP::Request->new(GET => $mal));
my $rrs = $response->content;
while ($rrs =~ m/href=\"https:\/\/myanimelist.net\/anime\/(.*?)\" class=\"hoverinfo_trigger fw-b fl-l\"/g){
my $link = $1;
if ( $link !~ /video|season?_location=mal_h_m/ ) {
print ("https://myanimelist.net/$link\n");

use open ':std', ':encoding(UTF-8)';
my $base='https://myanimelist.net';
$fullink = "$link";
my $page = get($base.$fullink) or die $!;
my $p = HTML::TreeBuilder->new_from_content( $page );

my @trips= $p->look_down(_tag=>'span',itemprop=>'description')->as_text;
foreach my $trip (@trips){
   print $trip;
}
}
}

我得到这个错误代码:

Invalid argument at name.pl line 19.

有什么办法可以解决吗?

perl html 解析

评论

0赞 simbabque 4/26/2018
在接受我们的建议并切换到解析器方面做得很好!:)现在,如果你想学习Perl(而不是仅仅解决这个问题然后继续前进),我邀请你把你的最终程序发布到Code Review,当它工作时,并用perlbeginner标记它。我们将为您提供一些关于如何改进它的建议。
0赞 Mobrine Hayde 4/26/2018
好的,但它需要更多的工作

答:

3赞 Andrey 4/26/2018 #1

这里有问题。看起来你错过了动漫:

my $page = get($base.$fullink) or die $!;

尝试将其替换为:

my $url = $base.'/anime/'.$fullink;
my $page = get($url) or die $!;

或替换:

my $base='https://myanimelist.net';

my $base='https://myanimelist.net/anime/';