【问题标题】:Detect a broken link (web) in perl在 perl 中检测损坏的链接(网络)
【发布时间】:2013-05-13 10:32:40
【问题描述】:

我正在尝试检测链接是否损坏,就好像它是一个网址一样,我可以将其粘贴到我的浏览器中并找到一个网页。到目前为止,我已经尝试了两种在网上找到的方法,但都给了我误报(LWP::UserAgent 和 LWP::Simple)。

#!/usr/bin/perl -w

use strict;
use LWP::UserAgent;

my $url1 = 'http://www.gutenberg.org';
my $url2 = 'http://www.gooasdfzzzle.com.no/thisisnotarealsite';


my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/8.0");  # Pretend to be Mozilla

my $req = HTTP::Request->new(GET => "$url1");
my $res = $ua->request($req);

if ($res->is_success) {
    print "Success!\n";
} else {
    print "Error: " . $res->status_line . "\n";
}

$req = HTTP::Request->new(GET => "$url2");
$res = $ua->request($req);

if ($res->is_success) {
    print "Success!\n";
} else {
    print "Error: " . $res->status_line . "\n";
}

这给了我以下输出:

Success!
Success!

然后是

#!/usr/bin/perl -w

use strict;
use LWP::Simple;

my $url1 = 'http://www.gutenberg.org';
my $url2 = 'http://www.gooasdfzzzle.com.no/thisisnotarealsite';

if (head("$url1")) {
    print "Yes\n";
} else {
    print "No\n";
}

if (head("$url2")) {
    print "Yes\n";
} else {
    print "No\n";
}

这给了我一个输出:

Yes
Yes

我在这里遗漏了什么吗?

【问题讨论】:

  • 您的代码对我有用。 perl lwp_test.pl Success! Error: 500 Can't connect to www.gooasdfzzzle.com.no:80 (Bad hostname)您是否有“有用”的代理或网关服务 - 我建议您 print $res->content(); 以获得更多线索。
  • @TylerHills perl -v ?
  • 我的工作正常。

标签: perl lwp broken-links


【解决方案1】:

您的代码对我来说运行良好,如果您如前所述在 VPN 或网关后面运行,我只能看到问题。始终使用 strictwarnings,这是另一种方法,因此您不必在每次要检查有效链接时都初始化新的 Request 对象。

use strict;
use warnings; 
use LWP::UserAgent; 

sub check_url { 
  my ($url) = @_; 
  my $ua = LWP::UserAgent->new; 
  my $req = HTTP::Request->new(HEAD => $url);
  my $res = $ua->request($req); 
  return $res->status_line if $res->is_error;
  return "Success: $url"; 
} 

【讨论】:

  • 感谢您的回复,我猜这是我的防火墙,当我转到一个看起来正确的页面时,例如“notarealaddressever.notreal”,它会将我引导到一个页面,告诉我他们找不到那个页面,所以这可能导致它不会失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 2014-04-10
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
相关资源
最近更新 更多