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

时间:2016-01-12 01:30:15

标签: php python html forms

我有一个简单的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: How to send POST request?但不一样,因为这是一个更简单,更简单的示例,说明如何在Python中应用requests.post函数。我已经尝试在上面的线程中实现解决方案但是只获得了原始html的文本。

1 个答案:

答案 0 :(得分:2)

好像你的帖子请求中有问题:

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

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

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