使用Python的POST不起作用

时间:2016-06-03 09:01:02

标签: python post http-post python-3.5

我在互联网上看了很多帖子,但似乎没有一个对我有用。 我有一个网页表单需要用户名和密码才能登录。这是我到目前为止尝试过的代码片段

params = urllib.parse.urlencode({'login' : 'user', 'password' : 'pwd'})
f = urllib.request.urlopen("https://example.com/login.php?%s" % params)
print(f.read().decode('utf-8'))

然而,它让我返回登录页面源而不是登录后出现的“用户面板”。如果我在浏览器的URL栏中写https:/example.com/login.php?login=user&password=pwd,它会将我登录。目标是获取登录后显示的页面源(“用户面板”)。 有人可以帮帮我吗?

使用Python 3.5

2 个答案:

答案 0 :(得分:1)

正确用法是

f = urllib.request.urlopen("https://example.com/login.php", data=params)

来自urllib.request documentation

  

data 可以是指定要发送到服务器的其他数据的字符串,如果不需要此类数据,则可以是None

请注意,这会发送POST个请求,而不是GET。如果您必须发送GET请求,您只需执行以下操作:

f = urllib.request.urlopen("https://example.com/login.php?user={0}&password={1}".format('user', 'pwd'))

答案 1 :(得分:1)

根据the documentation for urllib,您需要将关键字参数templateUrl: 'js/directives/flightInfo.html', link: function(scope, ele, attr) { scope.plusOneAdult = function(id) { // your code }; scope.minusOneAdult = function(id) { // your code } } (或第二个位置参数)传递给data,而不是将它们添加到网址:

urlopen