0

Je travaille avec mécaniser et python 2.7 pour envoyer une demande à une page avec un formulaire, les données GET cette foisPython réoriente form action

<form method='get' action='/470711262846118652822405241081316835027/new2'> 
<textarea name='name' rows='5' style='width:100%'></textarea> 
<br> 
<table summary='' style='width:100%'> 
<tr> 
<td align='right' valign='top'> 
<input type='submit' value='Submit'> 
</td> 
</tr> 
</table> 
</form> 

quand je

try: 
    request = Request(url,data,header) 
    response = urlopen(request) 
    html = response.read() 
    return html 
except IOError, e: 
    print "*Cant open {0}{1}{2}".format(fg(2), url,attr(0)) 
    print "*Reason:{0}".format(e.reason) 
    return None 

L'URL J'utilise en requête est www.foo.com/new?name=bar mais l'action est new2 et cette action me redirige vers une autre page et je ne peux pas gérer cela. Lorsque je fais tout cela manuellement dans le navigateur, je peux voir le code 302 de la redirection en utilisant l'élément inspecter.

en-tête, les cookies, les données et tout est bon, parce que je reçois le 200 https code et je peux lire la page, mais pas la redirection

Répondre

0

Je ne sais pas bien mécaniser, mais il semble que vous avez pas défini set_handle_redirect, donc le code d'état 302 n'est pas en cours de traitement. Voir http://mechanize.readthedocs.io/en/latest/browser_api.html?highlight=handle#mechanize.Browser.set_handle_redirect

Si vous avez défini pas, vous avez manuellement pour vérifier l'état HTTP 302 et lire l'en-tête location pour trouver l'URL cible de redirection.

+0

Merci pour votre réponse. Le problème ici est que je peux trouver n'importe où le code 302 avec python, mais je peux le faire manuellement dans le "inspecter l'élément" du navigateur. J'ai déjà défini le handle_redirect mais rien ne se passe. La réponse me renvoie à la même page. –

+0

Je ne connais pas vos exigences, mais avez-vous envisagé d'utiliser Demandes de Kenneth Reitz? Un jeu d'enfant à apprendre et très transparent sur la gestion des redirections? J'ai essayé plusieurs paquets en commençant avec Python, mais après les demandes je n'ai jamais regardé en arrière :-) http://docs.python-requests.org/fr/master/ – Arminius

+0

Oui, je l'ai déjà essayé. J'essaie tout de plusieurs façons. –