how to check if URL cannot be opened

J

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?

Thank you very much for your time
 
J

Josef Meile

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
 
J

Josef Meile

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
Ops, sorry, the SSL parameter isn't being used there, so you can delete it.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top