Python incapaz de recuperar o formulário com urllib ou mecanizar
Estou tentando preencher e enviar um formulário usando o Python, mas não consigo recuperar a página resultante. Eu tentei os métodos mechanize e urllib / urllib2 para postar o formulário, mas ambos tiveram problemas.
A forma que estou tentando recuperar está aqui:http://zrs.leidenuniv.nl/ul/start.php. A página está em holandês, mas isso é irrelevante para o meu problema. Pode-se notar que a ação do formulário redireciona parahttp://zrs.leidenuniv.nl/ul/query.php.
Primeiro de tudo, este é o método urllib / urllib2 que eu tentei:
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()
No entanto, quando tento imprimir o html recuperado, recebo a página original, não aquela a que a ação do formulário se refere. Portanto, qualquer sugestão de por que isso não envia o formulário seria muito apreciada.
Como o acima não funcionou, eu também tentei usar o mechanize para enviar o formulário. No entanto, isso resulta em um ParseError com o seguinte código:
import mechanize
url = 'http://zrs.leidenuniv.nl/ul/start.php'
br = mechanize.Browser()
response = br.open(url)
br.select_form(nr = 0)
onde a última linha sai com o seguinte: "ParseError: unexpected '-' char in declaration". Agora percebo que esse erro pode indicar um erro na declaração DOCTYPE, mas como não consigo editar a página do formulário, não consigo testar declarações diferentes. Qualquer ajuda sobre este erro também é muito apreciada.
Agradeço antecipadamente por sua ajuda.