[英]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.