《hadoop權威指南》的天氣數據可以在ftp://ftp3.ncdc.noaa.gov/pub/data/noaa下載,在網上看到這個數據好開心,打開ftp發現個問題,呀呀,這么多文件啊,我一個個去點另存為,得點到啥時候啊,迅雷應該有批量下載,只是我沒找到,估計是我瀏覽器把迅雷禁掉了,干脆自己用python寫一個實現下載好了,網上早了一下,發現很簡單啊
代碼如下:
#!/usr/bin/python
#-*- coding: utf-8 -*-
from ftplib import FTP
def ftpconnect():
ftp_server = 'ftp3.ncdc.noaa.gov'
username = ''
password = ''
ftp=FTP()
ftp.set_debuglevel(2) #打開調試級別2,顯示詳細信息
ftp.connect(ftp_server,21) #連接
ftp.login(username,password) #登錄,如果匿名登錄則用空串代替即可
return ftp
def downloadfile():
ftp = ftpconnect()
#print ftp.getwelcome() #顯示ftp服務器歡迎信息
datapath = "/pub/data/noaa/"
year=1911
while year<=1930:
path=datapath+str(year)
li = ftp.nlst(path)
for eachFile in li:
localpaths = eachFile.split("/")
localpath = localpaths[len(localpaths)-1]
localpath='weatherdata/'+str(year)+'--'+localpath#把日期放在最前面,方便排序
bufsize = 1024 #設置緩沖塊大小
fp = open(localpath,'wb') #以寫模式在本地打開文件
ftp.retrbinary('RETR ' + eachFile,fp.write,bufsize) #接收服務器上文件并寫入本地文件
year=year+1
ftp.set_debuglevel(0) #關閉調試
fp.close()
ftp.quit() #退出ftp服務器
if __name__=="__main__":
downloadfile()
新聞熱點
疑難解答