由于Python3合并URLib与URLlib2统一为URLlib,Python3将urlopen方法放在了urllib.request对象下。
官方文档:https://docs.python.org/3/library/urllib.request.html#module-urllib.request
在实现爬取网页过程中,屡次执行以下脚本:
#coding:UTF-8 import random; import urllib.request;# 不推荐使用 import urllib rawdata = urllib.request.urlopen(‘http://www.111cn.net/phper/python/68713.htm‘).read(); file = open("testfile","w+"); file.write(str(rawdata));
然而屡次报错:
E:\workspace\Python\python_study201708>python charsetTest.py
Traceback (most recent call last):
File "charsetTest.py", line 3, in <module>
import urllib.request;
File "D:\Python\lib\urllib\request.py", line 98, in <module>
import tempfile
File "D:\Python\lib\tempfile.py", line 45, in <module>
from random import Random as _Random
ImportError: cannot import name ‘Random‘
于是乎,我就抖了一下机灵:
将tempfile.py中第45行导入代码更改为:
# from random import Random as _Random #20170823 22:22改 from _random import Random as _Random
给它换了一个导入对象~
然后运行成功。
留下疑问:
这难道是py3的bug么??。。。。。不是有那么多人用urllib这个模块么,难道都没有出现和发现这个问题?错觉?。。excuse me?
参考文档:
Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)[http://www.111cn.net/phper/python/68713.htm]