哪个URLLIB包与Python一起使用

时间:2014-07-08 16:53:00

标签: python urllib2 urllib

我在Windows Vista 64位上使用Python.org版本2.7 64位。我在这里查看URLLIB的文档和示例代码:

https://docs.python.org/3/howto/urllib2.html ...并尝试提交以下代码以访问Guardian API中的数据:

from urllib2 import Request, urlopen, URLError


response = urllib.request.urlopen('http://beta.content.guardianapis.com/search?tag=football%2Fworld-cup-2014&api-key=uexnxqm5bfwca4tn2m47wnhv')
html = response.read()
print html

这不起作用,并且发出以下错误:

Traceback (most recent call last):
  File "C:/Python27/stack", line 4, in <module>
    response = urllib.request.urlopen('http://beta.content.guardianapis.com/search?tag=football%2Fworld-cup-2014&api-key=uexnxqm5bfwca4tn2m47wnhv')
NameError: name 'urllib' is not defined

在文档的页面地址上,它指向名为“urllib2”的子目录,但代码示例引用了一个名为“urllib”的模块。在PYPI上我找不到'urllib'的安装。如果我只运行import语句代码执行而不会导致错误,但其余的代码不起作用。

有谁能告诉我应该安装哪个'urllib'模块和/或代码产生此错误的原因?

由于

2 个答案:

答案 0 :(得分:3)

您正在使用Python 2.7,但尝试遵循为Python 3 编写的HOWTO。

使用correct documentation insteadhttps://docs.python.org/2/howto/urllib2.html,请注意网址如何包含2,而不是3,并且文档的样式存在重大差异。

接下来,您要从 urllib2模块中导入多个名称​​:

from urllib2 import Request, urlopen, URLError

这意味着现在已经绑定了名称urlopen(以及RequestURLError),因此您不会(并且不能)在代码中使用urllib2模块名称:

response = urlopen('http://beta.content.guardianapis.com/search?tag=football%2Fworld-cup-2014&api-key=uexnxqm5bfwca4tn2m47wnhv')

答案 1 :(得分:0)

请使用requests或如果您确实需要urllib urllib3附带的requests

其他一切都有太多陷阱,例如当谈到ssl时。