Python: проверьте, существует ли URL к jpg

Установите Qt5.x.0 (какая версия вам нужна), найдите путь установки и скопируйте весь файл gcc_64/lib/* в

/usr/lib/x86_64-linux-gnu/*
30
задан user257543 21 March 2010 в 06:09
поделиться

7 ответов

>>> 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).

33
ответ дан orokusaki 27 November 2019 в 23:15
поделиться

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

try:
  f = urllib2.urlopen(urllib2.Request(url))
  deadLinkFound = False
except:
  deadLinkFound = True
7
ответ дан user257543 27 November 2019 в 23:15
поделиться

Существуют проблемы с предыдущими ответами, когда файл находится на 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
4
ответ дан XavierCLL 27 November 2019 в 23:15
поделиться

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

import urllib
if urllib.urlopen('http://www.fakedomain.com/fakeImage.jpg').code == 200:
  print 'File exists'
1
ответ дан z3moon 27 November 2019 в 23:15
поделиться

Похоже, 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

4
ответ дан 27 November 2019 в 23:15
поделиться

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

-1
ответ дан 27 November 2019 в 23:15
поделиться

Попробуйте использовать Mechanize :

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'
1
ответ дан 27 November 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: