我正在编写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。
答案 0 :(得分:1)
如果我没错,你应该将你传递给url open()函数的数据字典中的请求数据传递给你。
data = urllib.urlencode({'abc': 'def', 'fgh': 'jkl'})
urllib2.urlopen(urllib2.Request('http://stackoverflow.com/index.php'))
另外,就像你说的那样,除非你绝对需要urllib提供的低级访问权限,否则请使用Requests。
希望这有帮助。