Wie ein Formular mit mehr als 1 Submit-Button einzureichen. Senden einer POST zu einer Website. (Python)

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

Frage

Ich erstelle ein Skript verwenden Python Mechanize , dass auf einer Website anmelden und einreichen eine Form. Allerdings ist dieses Formular mit 3 Submit-Buttons (Vorschau, Post, und Abbrechen). Ich bin nur eine Taste verwendet ...

Dies ist die Form:

<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)>>

Und das ist mein Code:

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()

Wenn ich dieses Skript ausführen ... wird es nicht funktionieren. Nichts passiert. Ich gehe davon aus, da es Schaltflächen in der Form 3 einzureichen hat? Oder ist es ein anderes Thema?

War es hilfreich?

Lösung 2

Problem gelöst.

Verwenden Sie keine Python mechanize. Es wird nicht lassen Sie andere Post-Daten senden.

Aus irgendeinem Grunde ist die Post-Daten zur Zeit in der Frage ist nicht ausreichend. Es gibt andere Dinge, die an den Server gesendet werden muss.

Sie müssen daher die regelmäßige Öffner / cookiejar Methode verwenden, um alle Daten zu senden. Ich habe die zusätzlichen Daten (außer Betreff, Nachricht, E, Identität) von Firebug (am NET suchen)

Andere Tipps

Ich hatte das gleiche Problem wie du.

Eine Form mit zwei Tasten einreichen, erste Vorschau war, die zweite war vor.

Zuerst mechanisieren wurde nur die erste Taste, kann ich die Server Antwort sehe mit

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

habe ich den Absenden-Button Namen als Parameter an die Funktion mechanize einreichen, und es hat funktioniert!

response = browser.submit("submit")

Testen Sie es, sollte es auch für Sie arbeiten!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top