【问题标题】:Using python, Is it possible to directly send form data to a website server and receive response without using a browser?使用python,是否可以不使用浏览器直接将表单数据发送到网站服务器并接收响应?
【发布时间】:2018-03-19 17:29:38
【问题描述】:
我参加了 Python 编程课程,因此我了解了该语言的基础知识。我目前正在尝试的一个项目涉及重复提交表单,直到请求成功。为了使用该程序获得更快的成功,我认为通过直接从服务器发送和接收数据来将浏览器从程序中删除会更快。我正在为其创建程序的网站也有崩溃的趋势,但我很确定我仍然可以接收并向服务器发送响应。目前,我只是在研究我可以用来完成任务的不同资源。我知道机械化很容易填写表格并提交,但它需要一个浏览器。所以我的问题是,在没有浏览器的情况下,在 python 中直接与服务器通信的最佳资源是什么。
如果我的任何知识有缺陷,我深表歉意。我确实参加了这门课,但我对这门语言还是比较陌生。
【问题讨论】:
标签:
python
python-requests
mechanize
【解决方案1】:
是的,有很多方法可以做到这一点,但最简单的是名为 requests 的第三方库。
安装后,您可以执行以下操作:
requests.post("https://mywebsite/path", {"key: "value"})
【解决方案2】:
你可以在下面试试这个。
from urllib.parse import urlencode
from urllib.request import Request, urlopen
url = 'https://httpbin.org/post' # Set destination URL here
post_fields = {'foo': 'bar'} # Set POST fields here
request = Request(url, urlencode(post_fields).encode())
json = urlopen(request).read().decode()
print(json)
【解决方案3】:
我从您的标签中看到您已经决定使用请求。
以下是使用请求执行基本 POST 请求的方法:
通常,您希望发送一些表单编码的数据——很像 HTML
形式。为此,只需将字典传递给 data 参数。您的
数据字典将在请求时自动进行表单编码
制作完成
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post("http://httpbin.org/post", data=payload)
print(response.text)
这个例子来自requests official documentation
我建议您阅读它并尝试其他可用示例,以便更加自信并决定哪种方法最适合您的任务。