我编码下载一些网站。但它无法正常运行
可以下载页面,但不打印“下载完成”,而是打印错误如下:
Traceback (most recent call last):
File "F:\Copy\Desktop\gethanhan.py", line 28, in <module>
con = urllib.urlopen(my_url[j]).read()
File "C:\Python27\lib\urllib.py", line 87, in urlopen
return opener.open(url)
File "C:\Python27\lib\urllib.py", line 208, in open
return getattr(self, name)(url)
File "C:\Python27\lib\urllib.py", line 463, in open_file
return self.open_local_file(url)
File "C:\Python27\lib\urllib.py", line 477, in open_local_file
raise IOError(e.errno, e.strerror, e.filename)
IOError: [Errno 2] : ''
我测试了几个小时。但我仍然找不到问题。这是代码:
......
#use a list which have urls to download url pages
j = 0
while j<50:
con = urllib.urlopen(my_url[j]).read()
filename = my_url[j][-26:]
print 'Downloading'
full_path ='F:/Copy/Desktop/kankan/' + str(j) + '.html'
#ERROR appears in here:
open(full_path,'w+').write(con)
j += 1
else:
print 'Download finished'
答案 0 :(得分:1)
您需要创建目录F:/Copy/Desktop/kankan
才能使其生效。
使用w+
打开文件不为您创建目录。它只表示您要打开一个文件进行读写,并且应该先将其清除(截断)。
如果您还需要创建父目录,请使用os.makedirs()
function。
对于while
循环,我会完全放弃else:
。只需改为print 'Download finished'
行。
您的第二个错误是将URL作为本地文件打开。检查URL,它指向硬盘上不存在的文件。
答案 1 :(得分:0)
File "C:\Python27\lib\urllib.py", line 87, in urlopen
我认为连接被远程主机强行关闭[kankan.com]。 您可以捕获所有异常:
try:
open(full_path,'w+').write(con)
except URLError as e:
print(e.reason)
except:
print("Unknown Error")