POST 与 Python 不工作

POST with Python not working

我在 Internet 上阅读了很多帖子,但其中 none 似乎对我有用。 我有一个 Web 表单,需要用户名和密码才能登录。这是我目前尝试过的代码片段

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'))

但是它返回登录页面源而不是登录后出现的 "user panel"。如果我在浏览器的 url 栏中写入 https:/example.com/login.php?login=user&password=pwd,它会记录我进来了。目标是获取 登录后出现的页面源 ("user panel")。 谁能帮帮我?

使用 Python 3.5

正确的用法是

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

来自urllib.request documentation

data may be a string specifying additional data to send to the server, or None if no such data is needed.

请注意,这将发送 POST 请求而不是 GET。如果您必须发送一个GET请求,您可以简单地执行以下操作:

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

根据 the documentation for urllib,您需要将关键字参数 data(或第二个位置参数)传递给 urlopen,而不是将它们添加到 url:

import urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
print f.read()