我在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'模块和/或代码产生此错误的原因?
由于
答案 0 :(得分:3)
您正在使用Python 2.7,但尝试遵循为Python 3 编写的HOWTO。
使用correct documentation instead:https://docs.python.org/2/howto/urllib2.html,请注意网址如何包含2
,而不是3
,并且文档的样式存在重大差异。
接下来,您要从 urllib2
模块中导入多个名称:
from urllib2 import Request, urlopen, URLError
这意味着现在已经绑定了名称urlopen
(以及Request
和URLError
),因此您不会(并且不能)在代码中使用urllib2
模块名称:
response = urlopen('http://beta.content.guardianapis.com/search?tag=football%2Fworld-cup-2014&api-key=uexnxqm5bfwca4tn2m47wnhv')
答案 1 :(得分:0)
请使用requests
或如果您确实需要urllib
urllib3
附带的requests
。
其他一切都有太多陷阱,例如当谈到ssl时。