Как отправить форму с более чем 1 кнопкой отправки. Отправка POST на сайт. (Python) - PullRequest
0 голосов
/ 02 декабря 2009

Я создаю скрипт, используя Python Mechanize , который может войти на сайт и отправить форму. Однако эта форма имеет 3 кнопки отправки («Просмотр», «Опубликовать» и «Отмена»). Я привык только к одной кнопке ...

Это форма:

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

А это мой код:

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

Если я запустите этот скрипт ... он не будет работать. Ничего не произошло. Я предполагаю, так как он имеет 3 кнопки отправки в форме? Или это другая проблема?

Ответы [ 2 ]

4 голосов
/ 13 января 2010

У меня была такая же проблема, как и у вас.

Форма с двумя кнопками отправки, первая - предварительный просмотр, вторая - отправка.

Сначала механизация использовала только первую кнопку, я мог видеть ответ сервера, используя

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

Я поместил имя кнопки отправки в качестве параметра для функции механизации отправки, и это сработало!

response = browser.submit("submit")

Проверьте это, оно должно работать и для вас!

0 голосов
/ 02 декабря 2009

проблема решена.

Не используйте Python Mechanize. Это не позволит вам отправлять другие почтовые данные.

По какой-то причине почтовых данных, находящихся в данный момент в вопросе, недостаточно. Есть и другие вещи, которые нужно отправить на сервер.

Поэтому вы должны использовать обычный метод opener / cookiejar для отправки всех данных. Я получил дополнительные данные (помимо темы, сообщения, E, личность) от Firebug (глядя на NET)

...