Tengo una página ASPX en https://searchlight.cluen.com/E5/CandidateSearch.aspx con un formulario en ella, que me gustaría enviar y analizar para obtener información.Envío de una solicitud de publicación a una página aspx
Usando urllib y urllib2 de Python Creé una solicitud posterior con los encabezados y el agente de usuario adecuados. Pero la respuesta html resultante no contiene la tabla de resultados esperada. ¿Estoy malentendido o me falta algún detalle obvio?
import urllib
import urllib2
headers = {
'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml; q=0.9,*/*; q=0.8',
'Content-Type': 'application/x-www-form-urlencoded'
}
# obtained these values from viewing the source of https://searchlight.cluen.com/E5/CandidateSearch.aspx
viewstate = '/wEPDwULLTE3NTc4MzQwNDIPZBYCAg ... uJRWDs/6Ks1FECco='
eventvalidation = '/wEWjQMC8pat6g4C77jgxg0CzoqI8wgC3uWinQQCwr/ ... oPKYVeb74='
url = 'https://searchlight.cluen.com/E5/CandidateSearch.aspx'
formData = (
('__VIEWSTATE', viewstate),
('__EVENTVALIDATION', eventvalidation),
('__EVENTTARGET',''),
('__EVENTARGUMENT',''),
('textcity',''),
('dropdownlistposition',''),
('dropdownlistdepartment',''),
('dropdownlistorderby',''),
('textsearch',''),
)
# change user agent
from urllib import FancyURLopener
class MyOpener(FancyURLopener):
version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
myopener = MyOpener()
# encode form data in post-request format
encodedFields = urllib.urlencode(formData)
f = myopener.open(url, encodedFields)
print f.info()
try:
fout = open('tmp.htm', 'w')
except:
print('Could not open output file\n')
fout.writelines(f.readlines())
fout.close()
Hay varias preguntas sobre este tema que fueron útiles (como how to submit query to .aspx page in python), pero estoy atascado en esto y pedir ayuda adicional, si eso es posible.
La página html resultante dice que debo iniciar sesión, pero la página aspx aparece en mi navegador sin ningún inicio de sesión.
Éstos son los resultados de la información():
Connection: close Fecha: Mar, 07 Jun 2011 17:05:26 GMT Servidor: Microsoft-IIS/6.0 Powered-X-By : ASP.NET X-AspNet-Version: 2.0.50727 Cache-Control: private Content-Type: text/html; charset = UTF-8 Content-Length: 1944
De un vistazo rápido, no veo nada malo con su código. Intenté visitar el sitio web en mi navegador (Firefox 4.0) y recibí el siguiente mensaje: 'Ocurrió un error al procesar su solicitud. Por favor, inténtelo de nuevo (puede que necesite volver a iniciar sesión). ...' – Gregg
¿Podría la página aspx de destino buscar algo en la sesión y tropezar porque no tenía la cookie de sesión aspnet en la solicitud en la que realiza su publicación? – ashelvey
Gracias por sus respuestas. Puedo visitar el sitio en mi navegador porque añado la información de inicio de sesión, que no incluí aquí. Sí, parece ser un problema de sesión entre asp.net y mi navegador simulado. – user773328