2015-08-22 2 views
-2

Почему следующий код python генерирует исключение?Почему urllib.urlopen выбрасывает исключение в python 3?

import urllib 

htmlfile=urllib.urlopen("http://google.com") 
htmltext=htmlfile.read() 
print (htmltext) 

Traceback

Traceback (most recent call last): 
    File "C:/Users/dhfur/Desktop/webcrawl1.py", line 3, in <module> 
    htmlfile=urllib.urlopen("http://google.com") 
AttributeError: 'module' object has no attribute 'urlopen' 
+0

потому что вы используете код python2, его 'import urllib.request' –

+0

Напоминание типа: urllib является первобытным, используйте' запросы'. – NeoWang

ответ

2

Поскольку функциональность была перенесена на urllib.request module:

import urllib.request 

htmlfile=urllib.request.urlopen("http://google.com") 

Целый много вещей были перемещены в Python 3 из их расположения бывшего Python 2. Документация Python 2 обычно обозначает новое местоположение; urllib documentation page не является исключением:

Примечание: Модуль urllib был разделен на части и переименован в Python 3 для urllib.request, urllib.parse, и urllib.error. Инструмент 2to3 автоматически адаптирует импорт при преобразовании ваших источников в Python 3. Также обратите внимание, что функция urllib.request.urlopen() в Python 3 эквивалентна urllib2.urlopen() и что urllib.urlopen() удален.

Python 3 documentation page for urllib содержит все новые модули под пространством имен.

+0

Хороший отзыв о ** Примечание **; Я этого раньше не заметил, спасибо. – msw