Cómo enviar un formulario con más de 1 botón de envío. Enviando una solicitud POST a un sitio web. (Pitón)

StackOverflow https://stackoverflow.com/questions/1830413

Pregunta

Estoy creando un script utilizando Python Mechanize que puede acceder a un sitio web y enviar una forma. Sin embargo, esta forma tiene 3 botones de envío (vista previa, Post y Cancelar). Estoy acostumbrado a un solo botón ...

Esta es la forma:

<TextControl(subject=Is this good for the holidays? Anyone know about the new tech?)>
  <IgnoreControl(threads=<None>)>
  <TextareaControl(message=Im new to technology stocks.)>
  <SelectControl(identity=[*annamae41g])>
  <RadioControl(E=[5, 4, *3, 2, 1, 0])>
  <SubmitControl(SubmitPreview=Preview Message) (readonly)>
  <SubmitControl(SubmitPost=Post Message) (readonly)>
  <SubmitControl(SubmitCancel=Cancel) (readonly)>
  <HiddenControl(action_btn=) (readonly)>
  <HiddenControl(_charset_=) (readonly)>
  <HiddenControl(.crumb=4DxnFEwMIGG) (readonly)>
  <HiddenControl(r=/Stocks_(A_to_Z)/Stocks_G) (readonly)>
  <HiddenControl(bn=25263) (readonly)>
  <HiddenControl(<None>=annamae41g) (readonly)>>

Y este es mi código:

br.open(newtopic_url)
br.select_form(name="postmsg")
br.form['subject'] = "Is this good for the holidays? Anyone know about the new tech?"
br.form['message'] = "Im new to technology stocks."
br.form['E'] = ['3']
br.form['identity'] = ['annamae41g']
print br.form
br.submit()

Si me quedo este guión ... no va a funcionar. No pasa nada. Estoy asumiendo ya que cuenta con 3 botones de envío en forma? O se trata de otro tema?

¿Fue útil?

Solución 2

problema resuelto.

No utilice mecanizar pitón. No le permitirá enviar otros datos de envío.

Por alguna razón, los datos de envío en la actualidad la cuestión no es suficiente. Hay otras cosas que necesita ser enviado al servidor.

Por lo tanto, se debe utilizar el método regular de apertura / CookieJar para enviar todos los datos a través. Tengo los datos adicionales (además de tema, mensaje, E, identidad) de Firebug (mirando a la red)

Otros consejos

Yo tenía el mismo problema que tú.

Un formulario con dos botones de envío, primero fue vista preliminar, la segunda era presentar.

En un primer momento, fue mecanizar utilizando sólo el primer botón, pude ver la respuesta del servidor utilizando

response = browser.submit()
print response.read()

puse el nombre de botón de envío como parámetro a la función de presentar mecanizar, y funcionó!

response = browser.submit("submit")

Prueba de ello, se debe trabajar para usted también!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top