Python2 urllib / urllib2错误的URL问题

时间:2013-08-04 18:09:14

标签: python urllib2 urllib

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

我偶然发现了一个似乎未在文档中提及的问题。让我们假设我们有以下有效网址: 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。

1 个答案:

答案 0 :(得分:1)

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

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

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

希望这有帮助。