[英]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 :: GZip和WWW :: Mechanize :: Cached,以便在测试机器脚本时加快开发速度。
关闭autocheck
和手工检查status()
它返回的响应的HTTP状态代码。
这是一个3位数字,如200表示OK , 404表示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.