পাইথনে, আমি কীভাবে urlib ব্যবহার করব কোনও ওয়েবসাইট 404 বা 200 কিনা তা দেখতে?


উত্তর:


176

গেটকোড () পদ্ধতি (পাইথন 2.6 এ যুক্ত) HTTP স্থিতি কোডটি প্রতিক্রিয়া সহ প্রেরিত হয়েছিল, বা URL টি এইচটিটিপি ইউআরএল না থাকলে কিছুই দেয় না।

>>> a=urllib.urlopen('http://www.google.com/asdfsf')
>>> a.getcode()
404
>>> a=urllib.urlopen('http://www.google.com/')
>>> a.getcode()
200

পাইথন 3 ব্যবহার করতে, কেবল ব্যবহার করুন from urllib.request import urlopen
নাথানেল ফারলে

4
পাইথন ৩.৪-তে, যদি ৪০৪ থাকে, urllib.request.urlopenএকটি প্রদান করে urllib.error.HTTPError
এমসিবি

অজগর ২.7 এ কাজ করে না। যদি এইচটিটিপি 400 ফিরিয়ে দেয়, তবে একটি ব্যতিক্রম ছুঁড়ে ফেলা হয়
নাদব বি

86

আপনি urlib2 ব্যবহার করতে পারেন :

import urllib2

req = urllib2.Request('http://www.python.org/fish.html')
try:
    resp = urllib2.urlopen(req)
except urllib2.HTTPError as e:
    if e.code == 404:
        # do something...
    else:
        # ...
except urllib2.URLError as e:
    # Not an HTTP-specific error (e.g. connection refused)
    # ...
else:
    # 200
    body = resp.read()

দ্রষ্টব্য এটি HTTPErrorএকটি উপক্লাস URLErrorযা HTTP স্থিতি কোড সংরক্ষণ করে।


দ্বিতীয়টি কি elseভুল?
সামি বেঞ্চেরিফ

@ নাদববি ব্যতিক্রম বস্তু 'ই' একটি প্রতিক্রিয়াশীল অবজেক্টের মতো দেখবে। এটি, এটি ফাইলের মতো এবং আপনি এটি থেকে পেললোডটি 'পড়তে' পারেন।
জো হোলোয়

37

পাইথন 3 এর জন্য:

import urllib.request, urllib.error

url = 'http://www.google.com/asdfsf'
try:
    conn = urllib.request.urlopen(url)
except urllib.error.HTTPError as e:
    # Return code error (e.g. 404, 501, ...)
    # ...
    print('HTTPError: {}'.format(e.code))
except urllib.error.URLError as e:
    # Not an HTTP-specific error (e.g. connection refused)
    # ...
    print('URLError: {}'.format(e.reason))
else:
    # 200
    # ...
    print('good')

জন্য ইউআরএলআরআর print(e.reason) ব্যবহার করা যেতে পারে।
গিটনিক

কি হবে http.client.HTTPException?
সিএমসিডিগ্রাগনকাই

6
import urllib2

try:
    fileHandle = urllib2.urlopen('http://www.python.org/fish.html')
    data = fileHandle.read()
    fileHandle.close()
except urllib2.URLError, e:
    print 'you got an error with the code', e

5
টিআইএমএক্স urlib2 দ্বারা নিক্ষিপ্ত জেনেরিক ত্রুটি নয়, HTTP রিকোয়েস্ট কোড (200, 404, 500, ইত্যাদি) দখল করতে আগ্রহী।
জোশুয়া বার্নস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.