【问题标题】:Python2 urllib/urllib2 wrong URL issuePython2 urllib/urllib2 错误的 URL 问题
【发布时间】:2013-08-04 18:09:13
【问题描述】:

我正在编写一个 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。

【问题讨论】:

  • 不要当英雄,使用 python-requests。在困难模式下玩 python 没有可解锁的成就。 :D

标签: python urllib2 urllib


【解决方案1】:

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

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

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

希望这会有所帮助。

【讨论】:

  • 我最终使用了 Requests,因为我无法找到解决此问题的方法...无论如何,谢谢!
  • 这个答案实际上对data没有任何作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2015-09-20
相关资源
最近更新 更多