2013-11-26 454 views
0

我有這樣的代碼accroding到文件類型:下載文件並重新命名使用Python的urllib

import urllib 
from bs4 import BeautifulSoup 
url = "http://www.downloadcrew.com/article/28976-flicflac" 
pageurl = urllib.urlopen(url) 
soup = BeautifulSoup(pageurl) 
app_name = soup.find('div',{'id':'articleTop'}).find('h1',{'id':'articleTitle'}).contents[0].strip() 
download_link = "http://www.downloadcrew.com"+soup.find('div',{'class':'downloadLink'}).find('a')['href'].split(',')[1].strip().strip("'") 
source = urllib.urlopen(download_link).read() 
print "Downloading: "+(app_name) 
filename = (app_name) 
files = open(filename,'w') 
files.write(source) 
files.close() 

當我運行此代碼,下載的文件應該是名「flicflac.zip」 但我得到的是不'flicflac.zip'。它是一個文件擴展名。 如何使它自動命名如上?

+0

什麼是'print'語句的輸出? –

回答

3

您可以查看文件的內容類型,並相應地添加擴展名:

from mimetypes import guess_extension 

source = urllib.urlopen(download_link) 
extension = guess_extension(source.info()['Content-Type']) 
if extension: 
    app_name += extension 
else: 
    # what to do? discard? 
    pass 

# later do source.read() 
+0

如何自動命名而不必手動命名? –

+0

更新了我的答案 –

+0

我很困惑。對於source.read(),爲什麼存檔已損壞? –