【问题标题】:Using python requests on a simple form在一个简单的表单上使用 python 请求
【发布时间】:2016-04-16 12:09:43
【问题描述】:

我有一个简单的 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,然后检索结果回显的源代码。导入 requests 模块后,我在 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 的文本。

【问题讨论】:

  • 您正在发帖到postform.html,表单似乎表明表单的目标是post.php
  • 真的非常感谢。如果你在“答案”框中输入,我会接受这个
  • 没关系,我觉得一个简单的评论就够了

标签: php python html forms


【解决方案1】:

您的 Post 请求似乎有问题:

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

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

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

【讨论】:

  • 谢谢。那行得通。类似的规则是否适用于 aspnet 表单?
  • @user32882 是的,他们会的。原因是因为它指向的是一个url,即使是url结尾的错误也会导致404等错误。一般需要查看实际的html表单,确定完成后会去哪里。
猜你喜欢
  • 2011-03-13
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
相关资源
最近更新 更多