簡體   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