python - 在 mechanize 中提交表单

标签 python forms mechanize

我在提交表单提交结果时遇到问题(我可以提交表单,但我无法在第一个页面之后的页面上提交表单)。

我有:

browser = mechanize.Browser()
browser.set_handle_robots(False)
browser.open('https://www.example.com/login')
browser.select_form(nr=0)

browser.form['j_username'] = 'username'
browser.form['j_password'] = 'password'
req = browser.submit()

这是有效的,因为 print req 结果是

`

<body onload="document.forms[0].submit()">
    <noscript>
        <p>
            <strong>Note:</strong> Since your browser does not support JavaScript,
            you must press the Continue button once to proceed.
        </p>
    </noscript>

    <form action="https://www.example.com/Shibboleth.sso/SAML2/POST" method="post">
        <div>
            <input type="hidden" name="RelayState" value="cookie:95ca495c"/>                

            <input type="hidden" name="SAMLResponse" value="really long encoded value"/>                
        </div>
        <noscript>
            <div>
                <input type="submit" value="Continue"/>
            </div>
        </noscript>
    </form>

</body>

`

但是当我尝试使用 req.select_form(nr=0)

时出现错误

我认为这可能与 mechanize 如何从 submit() 返回对象有关,我认为这是错误的方式。

任何意见或指导将不胜感激:)

最佳答案

再试一次 browser.select_form(nr=0) 而不是 req.select_form(nr=0)。 (在提交或点击一个链接之后,新的响应被认为是一个实际的浏览器页面——就像在浏览器中一样:))

关于python - 在 mechanize 中提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3956280/

相关文章:

javascript - 验证码失败显示警报但自动提交表单如何阻止此情况

javascript - Bootstrap 表单在模式确认后提交

python - 使用 Python 和 Mechanize 接受条款和条件

ruby - Mechanize 和 NTLM 身份验证

ruby - 如何使用 mechanize/nokogiri 获得简单但格式化的 html?

python - 如何修复 HTML 电子邮件编号列表导致列表后的选项卡超过 99?

python - 如何从 Python : aka Command-Control-Shift-4 内部截取 Mac OS X 中的屏幕截图

html - 如何更改所选选项中的字体颜色?

python - 如何解析语法 `(a | b)* a`

javascript - 如何在 Google 可视化图表 API 中将多个列表用作单个数据