IT기타
구글 드라이브 파일 다운로드 링크 여러개 한꺼번에 받기
emilyyoo
2025. 3. 12. 19:06
728x90
구글 드라이브 파일 다운로드 링크 여러개 한꺼번에 받기 파이썬 코드.
구글 드라이브 파일 다운로드 링크의 접근권한이 "링크있는 사용자" 이거나 "공개" 일 때만 가능한 코드다.
사전에 selenium 이 설치되어 있어야 하고,
-> 없다면 -> pip install selenium requests
크롬 드라이버가 로컬에 있어야 한다.
-> 없다면 -> 아래 포스팅 참고해서 다운.
https://betterwe.tistory.com/150
**파이썬 코드
import time
import os
from selenium import webdriver
from seleniuhttp://m.webdriver.common.by import By
from seleniuhttp://m.webdriver.chrome.service import Service
from seleniuhttp://m.webdriver.chrome.options import Options
# ChromeDriver 경로 설정 (본인의 경로에 맞게 수정)
CHROMEDRIVER_PATH = "~~~/chromedriver"
# 다운로드할 Google Drive 파일 URL 목록
file_urls = [
"https://drive.google.com/file/d/~~~/view",
........
...............
# 필요한 만큼 URL 추가
]
# 다운로드 폴더 설정
download_folder = os.path.join(os.getcwd(), "downloads")
os.makedirs(download_folder, exist_ok=True)
# Chrome 옵션 설정 (자동 다운로드 활성화)
chrome_options = Options()
chrome_options.add_experimental_option("prefs", {
"download.default_directory": download_folder, # 다운로드 경로 설정
"download.prompt_for_download": False, # 다운로드 창 띄우지 않기
"safebrowsing.enabled": True
})
chrome_options.add_argument("--headless") # UI 없이 실행 (백그라운드 실행)
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
# Selenium WebDriver 실행
service = Service(CHROMEDRIVER_PATH)
driver = webdriver.Chrome(service=service, options=chrome_options)
def wait_for_download(download_path, timeout=30):
"""파일 다운로드 완료될 때까지 대기"""
initial_files = set(os.listdir(download_path))
elapsed = 0
while elapsed < timeout:
time.sleep(1)
elapsed += 1
new_files = set(os.listdir(download_path)) - initial_files
if new_files:
return list(new_files)[0] # 다운로드된 파일 반환
return None # 타임아웃
try:
for file_url in file_urls:
driver.get(file_url)
time.sleep(5) # 페이지 로딩 대기
# "다운로드" 버튼 클릭 (aria-label="다운로드" 속성을 가진 버튼 찾기)
try:
download_button = driver.find_element(By.XPATH, '//div[@aria-label="다운로드"]')
download_button.click()
print(f"파일 다운로드 시작: {file_url}")
# 파일 다운로드 대기
downloaded_file = wait_for_download(download_folder)
if downloaded_file:
print(f"다운로드 완료: {downloaded_file}")
else:
print(f"다운로드 실패 (타임아웃): {file_url}")
except Exception as e:
print(f"다운로드 버튼을 찾을 수 없음: {file_url}, 오류: {e}")
finally:
driver.quit() # 브라우저 종료
print("모든 파일 다운로드 완료!")
728x90