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