Python kann mit urllib oder mechanize kein Formular abrufen

Ich versuche, ein Formular mit Python auszufüllen und abzusenden, aber ich kann die resultierende Seite nicht abrufen. Ich habe beide Methoden mechanize und urllib / urllib2 ausprobiert, um das Formular zu veröffentlichen, aber beide haben Probleme.

Das Formular, das ich abrufen möchte, ist hier:http://zrs.leidenuniv.nl/ul/start.php. Die Seite ist auf Niederländisch, aber das ist für mein Problem irrelevant. Es kann bemerkenswert sein, dass die Formularaktion zu umleitethttp://zrs.leidenuniv.nl/ul/query.php.

Zuallererst ist dies die urllib / urllib2-Methode, die ich ausprobiert habe:

import urllib, urllib2
import socket, cookielib

url = 'http://zrs.leidenuniv.nl/ul/start.php'
params = {'day': 1, 'month': 5, 'year': 2012, 'quickselect' : "unchecked",
          'res_instantie': '_ALL_', 'selgebouw': '_ALL_', 'zrssort': "locatie",
          'submit' : "Uitvoeren"}
http_header = {  "User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.46 Safari/535.11",
                 "Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
                 "Accept-Language" : "nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4" }

timeout = 15
socket.setdefaulttimeout(timeout)

request = urllib2.Request(url, urllib.urlencode(params), http_header)
response = urllib2.urlopen(request)

cookies = cookielib.CookieJar()
cookies.extract_cookies(response, request)
cookie_handler = urllib2.HTTPCookieProcessor(cookies)
redirect_handler = urllib2.HTTPRedirectHandler()

opener = urllib2.build_opener(redirect_handler, cookie_handler)

response = opener.open(request)
html = response.read()

Wenn ich jedoch versuche, das abgerufene HTML zu drucken, erhalte ich die Originalseite, nicht die Seite, auf die sich die Formularaktion bezieht. Daher sind Hinweise, warum das Formular nicht gesendet wird, sehr willkommen.

Da das oben genannte Problem nicht auftrat, habe ich auch versucht, das Formular mithilfe von Mechanisierung abzusenden. Dies führt jedoch zu einem ParseError mit dem folgenden Code:

import mechanize

url = 'http://zrs.leidenuniv.nl/ul/start.php'
br = mechanize.Browser()
response = br.open(url)
br.select_form(nr = 0)

Die letzte Zeile wird wie folgt beendet: "ParseError: unexpected '-' char in declare". Jetzt ist mir klar, dass dieser Fehler auf einen Fehler in der DOCTYPE-Deklaration hindeutet, aber da ich die Formularseite nicht bearbeiten kann, kann ich keine anderen Deklarationen ausprobieren. Jede Hilfe zu diesem Fehler wird ebenfalls sehr geschätzt.

Vielen Dank im Voraus für Ihre Hilfe.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage