python: check if url to jpg exists
The code below is equivalent to tikiboy's answer, but using a high-level and easy-to-use requests library.
import requestsdef exists(path): r = requests.head(path) return r.status_code == requests.codes.okprint exists('http://www.fakedomain.com/fakeImage.jpg')
The requests.codes.ok
equals 200
, so you can substitute the exact status code if you wish.
requests.head
may throw an exception if server doesn't respond, so you might want to add a try-except construct.
Also if you want to include codes 301
and 302
, consider code 303
too, especially if you dereference URIs that denote resources in Linked Data. A URI may represent a person, but you can't download a person, so the server will redirect you to a page that describes this person using 303 redirect.
>>> 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
If the status is anything other than a 200, the resource doesn't exist at the URL. This doesn't mean that it's gone altogether. If the server returns a 301 or 302, this means that the resource still exists, but at a different URL. To alter the function to handle this case, the status check line just needs to be changed to return response.status in (200, 301, 302)
.
thanks for all the responses everyone, ended up using the following:
try: f = urllib2.urlopen(urllib2.Request(url)) deadLinkFound = Falseexcept: deadLinkFound = True