繁体   English   中英

使用perl WWW :: Mechanize处理404和内部服务器错误

[英]Handling 404 and internal server errors with perl WWW::Mechanize

我正在使用WWW :: Mechanize来抓取网站,它的效果很好,除非有时会出现返回错误代码404或500(未找到或内部服务器错误)的页面,然后我的脚本将退出并停止运行。 这真的搞乱了我的数据收集,所以无论如何WWW :: Mechanize会让我捕获这些错误,看看返回了什么样的错误代码(即404,500等)。 谢谢您的帮助!

你需要禁用autocheck:

my $mech = WWW::Mechanize->new( autocheck => 0 );

$mech->get("http://somedomain.com");

if ( $mech->success() ) {
    ...
}
else {
    print "status is: " . $mech->status;
}

另外,另外,请看一下WWW :: Mechanize :: Cached :: GZipWWW :: Mechanize :: Cached,以便在测试机器脚本时加快开发速度。

关闭autocheck和手工检查status()它返回的响应的HTTP状态代码。

这是一个3位数字,如200表示OK404表示Not Found ,依此类推。

use strict;
use warnings;
use WWW::Mechanize;

my $url = 'http://...';
my $mech = WWW::Mechanize->new(autocheck => 0);
$mech->get($url);

print $mech->status();

有关状态码定义,请参见http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

如果状态代码是400或更高 ,那么你得到错误 ......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM