gpt4 book ai didi

python - 不使用提交按钮提交,Mechanize

转载 作者:太空狗 更新时间:2023-10-29 18:29:10 24 4
gpt4 key购买 nike

所以,我从 Mechanize 开始,显然我尝试的第一件事是一个猴子犀牛级别的高级 JavaScript 导航站点。

现在我遇到的问题是提交表单。

通常我会使用 Mechanize 内置的 submit() 函数进行提交。

import mechanize

browser = mechanize.Browser()
browser.select_form(name = 'foo')
browser.form['bar'] = 'baz'
browser.submit()

这样它将使用 HTML 表单中可用的提交按钮。

但是,我停留的网站必须是一个不使用 HTML 提交按钮的网站......不,他们试图成为 JavaScript 专家,并通过 JavaScript 进行提交。

通常的 submit() 似乎不适用于此。

那么...有办法解决这个问题吗?

感谢任何帮助。非常感谢!

--[编辑]--

我卡住的 JavaScript 函数:

function foo(bar, baz) {
var qux = document.forms["qux"];

qux.bar.value = bar.split("$").join(":");
qux.baz.value = baz;
qux.submit();
}

我在 Python 中做了什么(以及什么不起作用):

def foo(browser, bar, baz):
qux = browser.select_form("qux")

browser.form[bar] = ":".join(bar.split("$"))
browser.form[baz] = baz
browser.submit()

最佳答案

三种方式:

如果使用 POST/GET 方法提交表单,则第一种方法更可取,否则您将不得不求助于第二种和第三种方法。

  1. 手动提交表单并检查 POST/GET 请求、它们的参数以及提交表单所需的 post url。用于检查 header 的流行工具是用于 Firefox 的 Live HTTP header 扩展和 Firebug 扩展,以及用于 Chrome 的开发人员工具扩展。使用 POST/GET 方法的示例:

    import mechanize
    import urllib

    browser = mechanize.Browser()
    #These are the parameters you've got from checking with the aforementioned tools
    parameters = {'parameter1' : 'your content',
    'parameter2' : 'a constant value',
    'parameter3' : 'unique characters you might need to extract from the page'
    }
    #Encode the parameters
    data = urllib.urlencode(parameters)
    #Submit the form (POST request). You get the post_url and the request type(POST/GET) the same way with the parameters.
    browser.open(post_url,data)
    #Submit the form (GET request)
    browser.open(post_url + '%s' % data)
  2. 重写 javascript 并在 Python 中执行。查看 spidermonkey。

  3. 模拟完整的浏览器。查看 Selenium 和 Windmill。

关于python - 不使用提交按钮提交,Mechanize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5035390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com