【问题标题】:How to submit a form with more than 1 submit button. Sending a POST to a website. (Python)如何提交具有多个提交按钮的表单。向网站发送 POST。 (Python)
【发布时间】:2023-03-09 03:49:02
【问题描述】:

我正在使用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 个提交按钮?还是其他问题?

【问题讨论】:

  • 您在“这是表单”中显示的代码看起来不像 HTML——您知道它是什么吗?您能否使用嗅探器找出它在各种情况下向其服务器发送的内容(可能是通过 HTTP 发布)?
  • 嗨,Alex,它实际上是“print br.form”。不过,我确实解决了这个问题。

标签: python http url urllib2 mechanize


【解决方案1】:

我和你有同样的问题。

一个带有两个提交按钮的表单,第一个是预览,第二个是提交。

起初,mechanize 只使用第一个按钮,我可以看到服务器回答使用

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

我将提交按钮名称作为参数传递给机械化提交功能,它起作用了!

response = browser.submit("submit")

测试一下,它应该也适合你!

【讨论】:

    【解决方案2】:

    问题解决了。

    不要使用 python 机械化。它不会让您发送其他帖子数据。

    由于某种原因,当前问题中的帖子数据不足。还有其他东西需要发送到服务器。

    因此,您必须使用常规的 opener/cookiejar 方法来发送所有数据。 我从 Firebug(查看 NET)获得了额外的数据(除了主题、消息、E、身份)

    【讨论】:

      猜你喜欢
      • 2017-04-12
      • 2013-02-23
      • 2012-10-02
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 2019-09-17
      • 1970-01-01
      相关资源
      最近更新 更多