how to check if URL cannot be opened

Josef Meile jmeile at hotmail.com
Wed Oct 27 21:05:14 CEST 2004


Hi John,

> Im new to python. So I was hoping someone could provide the following.
> How would I go about checking if a user can be opened. For example if
> user provides www.x.com, how would I check if there is such a url?
> What methods would I need to invoke?

This is the code I use with python greater than 2.3.3:

import urllib2
import socket

def checkUrl(url, timeout=5, SSL=0):
   """Checks an url for a python version greater
      than 2.3.3.
   """

   defTimeOut=socket.getdefaulttimeout()
   socket.setdefaulttimeout(timeout)
   found=1
   try:
     urllib2.urlopen(url)
   except (urllib2.HTTPError, urllib2.URLError,
           socket.error, socket.sslerror):
     found=0
   socket.setdefaulttimeout(defTimeOut)
   return found

Please note that I use the setdefaulttimeout method of the module socket 
because sometimes, specially if you type invalid ssl urls, the main 
thread will take a long time till you see an answer. With the timeout, 
it will wait for 5 seconds, then it will return. I also use the urllib2 
because its urlopen method is better than the original of urllib: Some 
webservers like zope, return an error page when an url isn't found; with 
urllib.urlopen, this page will be considered as a normal page. On the 
other hand, the urllib2.urlopen will raise an exception.

Regards,
Josef



More information about the Python-list mailing list