python: проверьте, существует ли url для jpg

В python, как бы проверить, существует ли url, заканчивающийся на .jpg?

ex: http://www.fakedomain.com/fakeImage.jpg

благодаря

  • Python: Загрузить возвращенный Zip-файл из URL-адреса
  • Python: Получить разделы URL-адреса
  • Асинхронная URL-схема, когда нам не нужен результат?
  • Начать бэкэнд с помощью async urlfetch в Google App Engine
  • Django: переменные параметры в URLconf
  • Сокращение URL-адреса с помощью Python
  • Есть ли функция для Python, которая похожа на getimagesize в PHP?
  • Создайте URL-адрес с заголовком статьи
  • 9 Solutions collect form web for “python: проверьте, существует ли url для jpg”

    >>> import httplib >>> >>> def exists(site, path): ... conn = httplib.HTTPConnection(site) ... conn.request('HEAD', path) ... response = conn.getresponse() ... conn.close() ... return response.status == 200 ... >>> exists('http://www.fakedomain.com', '/fakeImage.jpg') False 

    Если статус имеет значение, отличное от 200, ресурс не существует в URL-адресе. Это не значит, что все прошло. Если сервер возвращает 301 или 302, это означает, что ресурс все еще существует, но с другим URL-адресом. Чтобы изменить функцию обработки этого случая, необходимо проверить строку проверки состояния, чтобы return response.status in (200, 301, 302) .

    Приведенный ниже код эквивалентен ответу tikiboy , но с использованием высокоуровневой и простой в использовании библиотеки запросов .

     import requests def exists(path): r = requests.head(path) return r.status_code == requests.codes.ok print exists('http://www.fakedomain.com/fakeImage.jpg') 

    requests.codes.ok равно 200 , поэтому вы можете подставить точный код состояния, если хотите.

    requests.head может вызывать исключение, если сервер не отвечает, поэтому вы можете добавить конструкцию try-except.

    Также, если вы хотите включить коды 301 и 302 , рассмотрите также код 303 , особенно если вы разыскиваете URI, которые обозначают ресурсы в Связанных данных . URI может представлять человека, но вы не можете загрузить человека, поэтому сервер перенаправит вас на страницу, описывающую этого человека, используя перенаправление 303 .

    спасибо за все ответы всем, в итоге использовал следующее:

     try: f = urllib2.urlopen(urllib2.Request(url)) deadLinkFound = False except: deadLinkFound = True 

    Похоже, http://www.fakedomain.com/fakeImage.jpg автоматически перенаправляется на http://www.fakedomain.com/index.html без ошибок.

    Перенаправление для ответов 301 и 302 автоматически выполняется без ответа пользователя.

    Пожалуйста, посмотрите HTTPRedirectHandler , вам может потребоваться подкласс для его обработки.

    Вот один образец из Dive Into Python:

    http://diveintopython3.ep.io/http-web-services.html#redirects

    Проблемы с предыдущими ответами, когда файл находится на ftp-сервере ( ftp://url.com/file ), следующий код работает, когда файл находится в ftp, http или https:

     import urllib2 def file_exists(url): request = urllib2.Request(url) request.get_method = lambda : 'HEAD' try: response = urllib2.urlopen(request) return True except: return False 

    Попробуйте это с помощью механизации :

     import mechanize br = mechanize.Browser() br.set_handle_redirect(False) try: br.open_novisit('http://www.fakedomain.com/fakeImage.jpg') print 'OK' except: print 'KO' 

    Я думаю, вы можете попробовать отправить http-запрос на URL-адрес и прочитать ответ. Если исключение не было обнаружено, оно, вероятно, существует.

    Я не знаю, почему вы это делаете, но в любом случае: следует отметить, что только потому, что запрос на «образ» преуспевает, не означает, что это то, что вы думаете (оно может перенаправить на что угодно, или возвращать любые данные любого типа и потенциально вызывать проблемы в зависимости от того, что вы делаете с ответом).

    Извините, я продолжал рассказывать о онлайн-подвигах и о том, как сегодня защищаться от них: P

    Это может быть достаточно хорошим, чтобы увидеть, существует ли URL-адрес файла.

     import urllib if urllib.urlopen('http://www.fakedomain.com/fakeImage.jpg').code == 200: print 'File exists' 
    Python - лучший язык программирования в мире.