Hướng dẫn how does python handle httperror? - python xử lý httperror như thế nào?

tôi có

import urllib2
try:
   urllib2.urlopen("some url")
except urllib2.HTTPError:
   

Nhưng những gì tôi cuối cùng đang bắt được bất kỳ loại lỗi HTTP nào. Tôi chỉ muốn bắt nếu trang web được chỉ định không tồn tại (404?).

Hướng dẫn how does python handle httperror? - python xử lý httperror như thế nào?

Piper

1.2562 huy hiệu vàng15 Huy hiệu bạc25 Huy hiệu đồng2 gold badges15 silver badges25 bronze badges

hỏi ngày 7 tháng 7 năm 2010 lúc 8:25Jul 7, 2010 at 8:25

Arnab Sen Guptaarnab Sen GuptaArnab Sen Gupta

5.5195 Huy hiệu vàng23 Huy hiệu bạc16 Huy hiệu đồng5 gold badges23 silver badges16 bronze badges

1

Python 3

from urllib.error import HTTPError

Python 2

from urllib2 import HTTPError

Chỉ cần bắt HTTPError, xử lý nó và nếu không phải là lỗi 404, chỉ cần sử dụng raise để ghi lại ngoại lệ.

Xem hướng dẫn Python.

Dưới đây là một ví dụ hoàn chỉnh cho Python 2:

import urllib2
from urllib2 import HTTPError
try:
   urllib2.urlopen("some url")
except HTTPError as err:
   if err.code == 404:
       
   else:
       raise

Wouter

5202 Huy hiệu vàng12 Huy hiệu bạc21 Huy hiệu đồng2 gold badges12 silver badges21 bronze badges

Đã trả lời ngày 7 tháng 7 năm 2010 lúc 9:14Jul 7, 2010 at 9:14

Tim Pietzckertim PietzckerTim Pietzcker

Phù bằng vàng 319K5757 gold badges494 silver badges550 bronze badges

4

Cho Python 3.x

import urllib.request
import urllib.error
try:
    urllib.request.urlretrieve(url, fullpath)
except urllib.error.HTTPError as err:
    print(err.code)

Đã trả lời ngày 4 tháng 10 năm 2013 lúc 2:27Oct 4, 2013 at 2:27

Hướng dẫn how does python handle httperror? - python xử lý httperror như thế nào?

3

Câu trả lời của Tim dường như gây hiểu lầm, đặc biệt là khi urllib2 không trả lại mã dự kiến. Ví dụ: lỗi này sẽ gây tử vong (tin hay không - không phải là hiếm khi tải xuống URL):

AttributionError: 'urlerror' đối tượng không có thuộc tính 'mã'

Nhanh chóng, nhưng có lẽ không phải là giải pháp tốt nhất sẽ là mã bằng cách sử dụng thử/ngoại trừ khối:

import urllib2
try:
    urllib2.urlopen("some url")
except urllib2.HTTPError as err:
    try:
        if err.code == 404:
            # Handle the error
        else:
            raise
    except:
        ...

Thông tin thêm về chủ đề thử/ngoại trừ các khối được lồng nhau thử/ngoại trừ các khối trong Python một thực hành lập trình tốt?

Hướng dẫn how does python handle httperror? - python xử lý httperror như thế nào?

Nelsongon

12.8k6 Huy hiệu vàng26 Huy hiệu bạc55 Huy hiệu Đồng6 gold badges26 silver badges55 bronze badges

Đã trả lời ngày 19 tháng 5 năm 2015 lúc 13:43May 19, 2015 at 13:43

Hướng dẫn how does python handle httperror? - python xử lý httperror như thế nào?

Sonavolobsonavolobsonavolob

3445 Huy hiệu bạc8 Huy hiệu Đồng5 silver badges8 bronze badges

0

Mã nguồn: lib/urllib/error.py Lib/urllib/error.py


Mô -đun urllib.error xác định các lớp ngoại lệ cho các ngoại lệ được tăng lên bởi

from urllib.error import HTTPError
0. Lớp ngoại lệ cơ sở là
from urllib.error import HTTPError
1.

Các trường hợp ngoại lệ sau đây được tăng lên bởi urllib.error khi thích hợp:

ngoại lệurllib.error.URLError

Người xử lý nêu ra ngoại lệ này (hoặc ngoại lệ có nguồn gốc) khi họ gặp vấn đề. Nó là một lớp con của

from urllib.error import HTTPError
3.

lý do¶

Lý do cho lỗi này. Nó có thể là một chuỗi tin nhắn hoặc một thể hiện ngoại lệ khác.

ngoại lệurllib.error.HTTPError

Mặc dù là một ngoại lệ (một lớp con của

from urllib.error import HTTPError
1), một
from urllib.error import HTTPError
5 cũng có thể hoạt động như một giá trị trả về giống như tệp không ngoại cảm (tương tự mà
from urllib.error import HTTPError
6 trả về). Điều này rất hữu ích khi xử lý các lỗi HTTP kỳ lạ, chẳng hạn như yêu cầu xác thực.

mã số¶

Mã trạng thái HTTP như được định nghĩa trong RFC 2616. Giá trị số này tương ứng với một giá trị được tìm thấy trong từ điển của các mã như được tìm thấy trong

from urllib.error import HTTPError
7.RFC 2616. This numeric value corresponds to a value found in the dictionary of codes as found in
from urllib.error import HTTPError
7.

lý do¶

Đây thường là một chuỗi giải thích lý do cho lỗi này.

Các tiêu đề phản hồi HTTP cho yêu cầu HTTP gây ra

from urllib.error import HTTPError
5.

Mới trong phiên bản 3.4.

ExceptionUrllib.error.ContentTooShorterRor (tin nhắn, nội dung) ¶urllib.error.ContentTooShortError(msg, content)

Ngoại lệ này được tăng lên khi hàm

from urllib.error import HTTPError
9 phát hiện ra rằng lượng dữ liệu đã tải xuống nhỏ hơn số lượng dự kiến ​​(được đưa ra bởi tiêu đề độ dài nội dung). Thuộc tính
from urllib2 import HTTPError
0 lưu trữ dữ liệu đã tải xuống (và được cho là bị cắt ngắn).

Làm thế nào để bạn xử lý httperror?

Chỉ cần bắt HTTPERROR, xử lý nó và nếu không phải là lỗi 404, chỉ cần sử dụng RAUSE để ghi lại ngoại lệ.use raise to re-raise the exception.

Làm thế nào để Python xử lý lỗi 400?

Nâng 400 con trăn lỗi với các ví dụ mã..
Kiểm tra URL đã gửi ..
Clear Trình duyệt bộ nhớ cache ..
Cookies trình duyệt rõ ràng ..
Tải lên tệp vượt quá giới hạn máy chủ ..
Xóa bộ đệm DNS ..
Vô hiệu hóa các phần mở rộng trình duyệt ..

Làm cách nào để sửa lỗi 403 bị cấm trong python?

Bạn có thể thử các bước sau để giải quyết lỗi 403 trong trình duyệt, hãy thử làm mới trang, kiểm tra lại URL, xóa cookie trình duyệt, kiểm tra thông tin đăng nhập người dùng của bạn.refreshing the page, rechecking the URL, clearing the browser cookies, check your user credentials.

Làm cách nào để xem 404 lỗi trong Python?

Làm cách nào để xem 404 lỗi trong Python?Một phiên bản PoolManager là cần thiết để thực hiện các yêu cầu. Sau đó, chúng tôi đã sử dụng phương thức yêu cầu để lấy đối tượng HTTPRESPONSE cho trang web 'https://www.google.com/404'.Đối tượng httpresponse này chứa trạng thái, dữ liệu và tiêu đề.A PoolManager instance is needed to make requests. Then we have used the request method to get an HTTPResponse object for the web page 'https://www.google.com/404'. This HTTPResponse object contains status, data, and header.