我使用WWW :: Mechanize來抓取網站,除了有時它會打到返回錯誤代碼404或500(找不到或內部的頁面服務器錯誤),然後我的腳本就會退出並停止運行。這實際上與我的數據收集有關,所以無論如何WWW :: Mechanize會讓我發現這些錯誤並查看返回的錯誤代碼類型(即404,500等)。謝謝您的幫助!使用perl處理404和內部服務器錯誤WWW :: Mechanize
4
A
回答
6
你需要禁用自動檢查:
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測試你的機甲腳本時,以加快發展。
3
關閉autocheck
並手動檢查status()
,它會返回響應的HTTP狀態碼。
這就好比一個3位數字爲行,爲未找到,等等。
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以上,那麼你得到錯誤 ...
相關問題
- 1. Perl使用Parallel :: ForkManager和WWW :: Mechanize
- 2. 如何使用Android WebView處理「內部服務器錯誤」?
- 3. Perl WWW-Mechanize模塊
- 4. 處理遠程服務器返回錯誤:(500)內部服務器錯誤
- 5. 500內部服務器錯誤錯誤試圖使用ErrorDocument來處理請求
- 6. 使用perl填充表單WWW :: Mechanize :: Formfiller
- 7. 使用WWW :: Mechanize
- 8. 內部服務器錯誤使用PHP
- 9. 使用htaccess和css處理404錯誤
- 10. 內部服務器錯誤 -
- 11. 內部服務器錯誤
- 12. 內部服務器錯誤
- 13. 內部服務器錯誤
- 14. 內部服務器錯誤
- 15. 內部服務器錯誤
- 16. 內部服務器錯誤
- 17. 內部服務器錯誤
- 18. 內部服務器錯誤
- 19. 服務器錯誤:HTTP錯誤500.19 - 內部服務器錯誤
- 20. 如何在Ajax響應中處理內部服務器錯誤
- 21. 在AngularJS中處理HTTP 500內部服務器錯誤
- 22. ASHX處理程序返回500內部服務器錯誤
- 23. 內部服務器錯誤,而處理MVC5
- 24. jQuery的:處理內部服務器錯誤響應
- 25. HTTP服務器實現應該如何處理內部錯誤?
- 26. 在WAS上處理60秒後500(內部服務器錯誤)
- 27. * HTTP錯誤500.21 - 內部服務器ErrorHandler「處理程序/ exchange.axd_ *」
- 28. 500內部服務器錯誤 - 處理程序,asp.net MVC
- 29. 如何更改內部服務器錯誤的處理?
- 30. 內部服務器錯誤而處理PHP捲曲代碼
哇!正是我在找什麼。謝謝:) – srchulo
'autodie => 0'是這樣做的新方法我認爲 – surfer190
@ surfer190你確定你不是指'autocheck => 0'(就像我的例子)?我沒有在文檔中看到「autodie」。 – oalders