[파이썬] 엑셀자료에 있는 사진URL 정보를 특정 폴더에 내려받기
본문 바로가기
IT/파이썬

[파이썬] 엑셀자료에 있는 사진URL 정보를 특정 폴더에 내려받기

by SageIN 2022. 1. 1.
반응형

복잡하고 어려운 스크립트 보다는 간단한데 간간히 써먹을 만한 스크립트를 간간히 올릴까 합니다.

흔한 일은 아니지만 엑셀에서 사진 또는 파일을 받아야 할 경우가 있습니다.

적으면 손으로 작업해도 되겠지만. 많으면 힘들겠죠.

 

대충 아래와 같은 예제가 있다면.

 

 

 

1. 엑셀을 파일을 읽어 리스트를 만든다.

2. 엑셀의 첫열은 사진의 이름으로 만든다.

3. 엑셀의 링크에서 사진파일을 얻어 저장할 폴더에 넣는다.

 

3가지 단계로 진행하면 되겠죠.

 

wget 와 openpyxl 라이브러리를 내장 모듈 아니기에 미리 설치합니다.

 

pip install wget
pip install openpyxl  

 

소스코드를 작성해보면 

 

# wget , openpyxl, time을  import 해줍니다.
import wget  # 다운로드
import openpyxl as xl # 엑셀읽고 쓰기
import time 


xl_file_path = 'E:\\파이썬_개발\\테스트\\imgr2.xlsx' # 엑셀파일이 있는 곳을 적어줍니다. 


wb = xl.load_workbook(xl_file_path, data_only=True) # 엑셀파일을 열고 읽습니다.
ws = wb.worksheets[0] # 몇번째 시트에 해당 내용이 있는지에 따라 번호를 달리합니다. 저는 첫번째 시트, 0번째에 있습니다.


# 읽은 엑셀을 루프를 돌면서 다운로드 합니다. 
for row, item in enumerate(ws.rows):
   
    if(row > 0): # 첫행이 제목이라면 다음행부터 

        url_path = item[1].value # 1번째 열 다운로드할 url 경로
        file_name = item[0].value+'.jpg' # 0번째 '사진번호' 를 파일이름으로 확장자까지 적어줍니다.
        save_file_path = 'E:\\파이썬_개발\\테스트\\사진저장\\' # 저장할 곳의 파일 경로를 적어줍니다.
        try:   # 다운로드하다 사진이 없어 죽을 경우를 대비해 예외처리 합니다.
            wget.download(url_path , save_file_path+file_name) # 이미지가 있는 주소와 파일경로 + 저장할 이름
            time.sleep(0.5)  # 몇만건이라면 디도스공격이 될테니 천천히 받도록 쉬는 시간을 넣습니다.
        except:
            print(file_name + '실패') # 저장 못한경우 프린트 되도록

 

코드가 완성되었습니다. 

결과가 아래와 같이 지정한 폴더로 쏙 들어가면 성공입니다. 

엄청난 오랜시간 걸려야 할 작업이 단 몇분 몇초만에 끝날수 있습니다.

응용해보세요 쉽죠? 파이썬하세요 ~ : )      

 

반응형

댓글


TOP

Designed by 티스토리