【Python爬蟲】使用urllib.request下載已知連結的網路資源
阿新 • • 發佈:2018-12-26
如果有這樣一個場景,我們的EXCEL某一列記錄了好多(圖片、視訊、音訊)連結A,另外一列記錄了連結名稱B,現在我們想要自動下載這些連結的檔案,我們應該怎樣處理?
1.迴圈去excel取值,將A和B存入到一個二維列表中
2.根據連結字尾不同情況(.jpg,.mp4,mp3等)用urllib.request去下載內容
具體程式碼如下:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #作者:cacho_37967865 #部落格:https://blog.csdn.net/sinat_37967865 #檔案:getFile.py #日期:2018-11-24 #備註:獲取excel檔案中下載資訊存入到列表,然後迴圈去取資料下載檔案(mp4,mp3,jpg,pdf等) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' import xlrd import urllib.request import os def get_excel_cell(xlsFile,num,nrows): data = xlrd.open_workbook(xlsFile) table = data.sheets()[0] cellData = [] # 獲取指定列資料 for i in range(num, nrows): # 控制行數(開始i=num處理),(結束i=nrows不處理) row = [] className = table.cell_value(i, 3) # 第4列課程名稱 row.append(className) classUrl = table.cell_value(i, 4) # 第5列課程下載路徑 row.append(classUrl) cellData.append(row) return cellData def get_video(folder,url,fileName,fileType): os.chdir(folder) # 切換到將要存放檔案的目錄 file = open(fileName + fileType, "wb") # 開啟檔案 try: req = urllib.request.Request(url=url) req.add_header("User-Agent","Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36") video = urllib.request.urlopen(req, timeout=40) mp4 = video.read() # 將檔案轉換為bytes格式 file.write(mp4) # 檔案寫入 print(type(file),type(req),type(video),type(mp4)) except Exception as f: print(str(f)) file.close() if __name__ == '__main__': videoInfo = get_excel_cell('F:\PythonProject\Pacong\docs\yuyus185.xls',182,183) for i in range(len(videoInfo)): fileName = videoInfo[i][0] url = videoInfo[i][1] fileType = url[-4:] # 擷取最後4位,可以判斷內容的型別(.jpg,.mp4,mp3等) print(fileName,fileType,url) get_video('F:\SoftwareTest',url,fileName,fileType)