使用py3的urllib.urlopen方法时报错:
PS C:\Users\jiangcheng\Documents\Python Scripts> python
Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib
>>> rawdata = urllib.urlopen('http://www.jd.com/').read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'urllib' has no attribute 'urlopen'
靠谱解决:import urllib.request
PS C:\Users\jiangcheng\Documents\Python Scripts> python
Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib
>>> rawdata = urllib.urlopen('http://www.jd.com/').read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'urllib' has no attribute 'urlopen'
>>> rawdata = urllib.request.urlopen('http://www.jd.com/').read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'urllib' has no attribute 'request'
>>> import urllib.request
>>> rawdata = request.urlopen('http://www.jd.com/').read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'request' is not defined
>>> rawdata = urllib.request.urlopen('http://www.jd.com/').read()
完整代码:
PS C:\Users\jiangcheng\Documents\Python Scripts> python
Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib
>>> rawdata = urllib.urlopen('http://www.jd.com/').read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'urllib' has no attribute 'urlopen'
>>> rawdata = urllib.request.urlopen('http://www.jd.com/').read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'urllib' has no attribute 'request'
>>> import urllib.request
>>> rawdata = request.urlopen('http://www.jd.com/').read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'request' is not defined
>>> rawdata = urllib.request.urlopen('http://www.jd.com/').read()
>>> import chardet
>>> chardet.detect(rawdata)
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
本文解决了Python3中使用urllib.urlopen方法时遇到的AttributeError错误,并提供了正确的导入方式及示例代码。

3万+

被折叠的 条评论
为什么被折叠?



