ich muss eine ganze Reihe von URLs auf ihre Erreichbarkeit prüfen. Dazu setze ich über die urllib2 einen Request an jede URL ab.
Anschließend veruche ich ein urlopen und fange ggf. die Fehler, die mir die urllib2 entgegenwirft und bekomme somit den entsprechenden HTTP-Status-Code. Wird kein Fehler geworfen, ist der Status 200 und somit allen in Ordnung.
Im Fehlerfall gebe ich mir den Code aus und noch ein paar Infos, was denn schief gelaufen ist.
Code: Alles auswählen
import urllib2, httplib
def checkURL(url):
print 'URL: %s' % url
rHeader = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1",
"Accept": "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
"Accept-Language": "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3",
"Accept-Encoding": "gzip,deflate",
"Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7"}
req = urllib2.Request(url.lower(), None, rHeader)
try:
urllib2.urlopen(req)
except urllib2.URLError, e:
try:
print e.code
print e.__class__
print e
print e.info()
except AttributeError, e:
print 'kein Status'
except httplib.socket.error, e:
print '%s: %s' % (e[0], e[1])
else:
print '200'
print '-----------'
urls = ['http://www.westpfalz-klinikum.de']
for url in urls:
checkURL(url)
Diese Seite läuft auf einem Zope-Server und ich bekomme hier einen Status 500 zurück:
Code: Alles auswählen
URL: http://www.westpfalz-klinikum.de
500
urllib2.HTTPError
HTTP Error 500: Internal Server Error
Server: Zope/(Zope 2.7.6-final, python 2.3.4, linux2) ZServer/1.1
Date: Thu, 25 Jan 2007 09:31:24 GMT
Bobo-Exception-Line: 200
Content-Length: 824
Bobo-Exception-Value: See the server error log for details
Content-Type: text/html
Bobo-Exception-Type: IndexError
Connection: close
Bobo-Exception-File: BaseRequest.py
Code: Alles auswählen
HTTP/1.x 302 Moved Temporarily
Server: Zope/(Zope 2.7.6-final, python 2.3.4, linux2) ZServer/1.1
Date: Thu, 25 Jan 2007 09:58:52 GMT
Content-Length: 0
Content-Type: text/x-unknown-content-type
Location: ../westpfalz-klinikum/content/e15882/index_ger.html
Irgendwas läuft hier noch schief, dass mir Zope bei einer Umleitung (HTTP-Status 302) einen Internal Server Error entgegen wirft, wenn ich die urllib2 verwende.
Hat jemand eine Idee? Muss ich den Header noch erweitern? Ich bin mit meinem Latein am ende.
Danke,
Mat