在一个简单的表单上使用python请求


Using python requests on a simple form

我有一个简单的html表单(postform.html),它接受两个用户输入并将它们传递到php文件(post.php)。然后php文件会返回一个包含用户输入的字符串。

我在本地主机上运行这个,表单的代码如下所示:

<form action = "post.php" method = "post">
    Name <input type = "text" name = "user"><br />
    Company <input type = "text" name = "comp"> <br />
    <input type = "submit" value = "Submit Info">
</form>

我想使用Python请求模块,将信息发布到postform.html中,然后检索结果echo的源代码。导入请求模块后,我在Python命令提示符中尝试了以下操作:

>>> data = {'user': 'Bob', 'comp': 'Walmart'}
>>> r = requests.post("http://localhost/practice/SimpleForm/postform.html",data)
>>> print(r.text)
<html>
<head><title> Post Method in Action </title></head>
<body>
    <form action = "post.php" method = "post">
        Name <input type = "text" name = "user"><br />
        Company <input type = "text" name = "comp"> <br />
        <input type = "submit" value = "Submit Info">
    </form>
</body>
<html>

正如你所看到的,变量返回的文本是包含表单的原始html,这不是我想要的,我正在尝试将信息发布到表单并检索结果的源html(post.php)

在某些方面,我的问题类似于Python:如何发送POST请求?但不一样,因为这是一个更简单、更直接的例子,说明如何在Python中应用requests.post函数。我曾尝试在上面的线程中实现该解决方案,但再次只得到了原始html的文本。

您的Post请求中似乎有问题:

>>> r = requests.post("http://localhost/practice/SimpleForm/postform.html",data)
                                                                     ^^^^

表单试图指向postform.php,而不是html文件。只需将其更改为:

>>> r = requests.post("http://localhost/practice/SimpleForm/post.php",data)