0

Web サイトにログインしてフォームを送信できる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つの送信ボタンがあるので、私は推測していますか? それとも別の問題ですか?

4

2 に答える 2

4

私はあなたと同じ問題を抱えていました。

2 つの送信ボタンがあるフォーム。1 つ目はプレビュー、2 つ目は送信です。

最初は、mechanize は最初のボタンだけを使用していました。

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

送信ボタンの名前をパラメーターとして機械化送信機能に入れたら、うまくいきました!

response = browser.submit("submit")

テストしてみてください。あなたにも役立つはずです!

于 2010-01-12T22:06:00.680 に答える
0

問題が解決しました。

python mechanize を使用しないでください。他の投稿データを送信することはできません。

何らかの理由で、現在質問されている投稿データは十分ではありません。サーバーに送信する必要があるものは他にもあります。

したがって、通常の opener/cookiejar メソッドを使用してすべてのデータを送信する必要があります。Firebug から追加データ (件名、メッセージ、E、ID 以外) を取得しました (NET を参照)。

于 2009-12-02T04:05:36.967 に答える