1

我对此进行编码以下载一些网站。但它不能没有错误地运行

可以下载页面,但不是打印“下载完成”,而是打印以下错误:

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'
4

2 回答 2

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")
于 2013-09-03T07:41:50.997 回答
0

您需要F:/Copy/Desktop/kankan为此工作创建目录。

打开文件w+不会为创建目录。它仅表示您要打开一个文件以进行读取和写入,并且应该首先清除(截断)它。

如果您还需要创建父目录,请使用该os.makedirs()功能。

对于你的while循环,我会完全放弃else:。只是把print 'Download finished'线缩进去。

您的第二个错误是作为本地文件打开的 URL 。检查 URL,它指向您硬盘上不存在的文件。

于 2013-09-03T07:04:48.133 回答