2009-12-02 2 views
0

Я создаю скрипт, используя Python Mechanize, который может зайти на сайт и отправить форму. Однако в этой форме есть 3 кнопки отправки (Preview, Post и Cancel). Я привык к только одной кнопки ...Как отправить форму с более чем одной кнопкой отправки. Отправка POST на веб-сайт. (Python)

Это форма:

<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 кнопки отправки в форме? Или это еще одна проблема?

+1

Код, который вы видите в «это форма», не похож на HTML - знаете ли вы, что это такое? Можете ли вы использовать сниффер, чтобы узнать, что он отправляет (предположительно через HTTP-почту) на свой сервер в разных случаях? –

+0

Привет, Алекс, это на самом деле «print br.form». Однако я решил проблему. – TIMEX

ответ

0

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

Не используйте механику python. Он не позволит вам отправлять другие данные.

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

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

4

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

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

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

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

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

response = browser.submit("submit") 

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

+0

Этот метод работал для меня тоже – user567879