0

我正在编写 Python2 脚本以在网站中执行一些自动操作。我正在使用 urllib/urllib2 来完成这项任务。它涉及 GET 和 POST 请求、自定义标头等。

我偶然发现了一个文档中似乎没有提到的问题。假设我们有以下有效 url:https ://stackoverflow.com/index.php?abc=def&fgh=jkl ,我们需要在那里执行一个 POST 请求。

我的代码是什么样子的(如果您发现任何拼写错误,请忽略):

data = urllib.urlencode({ "data": "somedata", "moredata": "somemoredata" })
urllib2.urlopen(urllib2.Request("https://stackoverflow.com/index.php?abc=def&fgh=jkl", data))

没有显示错误,但根据网络服务器,请愿书被接收到“ https://stackoverflow.com/index.php ”而不是“ https://stackoverflow.com/index.php?abc=def&fgh =jkl ”。这里有什么问题?

我知道我可以使用Requests,但我想先使用 urllib/urllib2 。

4

1 回答 1

1

如果我没记错的话,您应该在传递给 url open() 函数的数据字典中传递您的请求数据。

data = urllib.urlencode({'abc': 'def', 'fgh': 'jkl'})
urllib2.urlopen(urllib2.Request('http://stackoverflow.com/index.php'))

另外,就像您说的那样,除非您绝对需要 urllib 提供的低级访问权限,否则请使用请求。

希望这可以帮助。

于 2013-08-04T19:01:13.903 回答