본문 바로가기
개발/python

[파이썬 실무 #1] 셀레니움 APK 자동 다운로드

by 향유 2020. 12. 16.

APK 자동 다운 프로그래밍 요청이 종종 들어온다.

기록의 위해 소스와 절차를 남긴다.

 

순서

>파이썬과 셀레니움을 다운로드한다.

>API 생성하여 다운받을 패키지 List를 확보한다.

>Web Driver 설치한다 (ex : 크롬 드라이버)

>소스 개발

>실행 프로그램 생성

 

준비과정

STEP1~5 까지 기본 세팅과 파트별 실행방법을 상세하게 기록해두었으니 참고하면 좋다.

 

STEP1.

파이썬 설치

[파이썬 시작하기 #1] 설치 및 환경설정

enjoyk.tistory.com/19?category=903810

 

 

STEP2.

개발 툴 설정

[파이썬 시작하기 #2] visual studio 개발 툴 선정, 설치, 개발환경 구축 (간단)

enjoyk.tistory.com/20?category=903810

 

 

STEP3.

구글 드라이버 셀레니움 라이브러리 설치 및 사용

[파이썬 시작하기 #3] 셀레니움 라이브러리 설치 및 사용법 예제

enjoyk.tistory.com/21?category=903810

 

 

STEP4.

API 통신 예제

[파이썬 시작하기 #4] API 통신하기 requests http

enjoyk.tistory.com/22?category=903810

 

 

STEP5.

실행 파일 생산 예제

[파이썬 시작하기 #5] 실행 파일 생성 만들기

enjoyk.tistory.com/23?category=903810

 

 

소스 파일

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

import os 
import time 
import requests
import json

def main(): 
    
    response = requests.get("API URL 입력")
    apklist = (json.loads(response.text)['data']['list'])
# example    apklist = [ 'com.android.vending', 'com.google.android.apps.docs.editors.docs', 'com.google.android.apps.youtube.music', 'com.google.android.videos' ] 
    
    apk_download (apklist) 
def apk_download(apklist): 
    # download 와 profile path 지정 
    download_dir = os.path.join(os.getcwd(), 'download') 
    profile_dir = os.path.join(os.getcwd(), 'profile') 
    
    option = Options() 
    option.add_argument("disable-infobars") 
    option.add_argument("disable-extensions") 
    #option.add_argument("start-maximized") 
    option.add_argument('disable-gpu') 
    #option.add_argument('headless') 
    
    option.add_argument("user-data-dir="+profile_dir) 
    
    option.add_experimental_option("prefs", {
         "download.default_directory": download_dir, 
         "download.prompt_for_download": False, 
         "download.directory_upgrade": True, 
         "safebrowsing.enabled": True 
    }) 

    # webdriver 얻어옴     
    browser = webdriver.Chrome('/Users/User/python/chromedriver',options=option)    
    # apk list 에서 apk download 시도함 
    for apk in apklist: 
        print(apk['pakage_name'])
        apk_mirror_url = 'https://m.apkpure.com/kr/google-play-store/{}/download?from=details'.format(apk['pakage_name']) 
        print ('Download apk', apk['pakage_name']) 
        browser.get(apk_mirror_url) 
        time.sleep(10) 
    # chrome에서 다운로드 완료 할때 까지 충분한 시간을 기다림 
    time.sleep(30) 
    # chrome 종료 
    browser.quit() 
    print ('Finish') 
if __name__ == "__main__": 
    main()

 

이슈사항 : 

1) /users/users/python/chromdriver 위치에 크롬 드라이버 위치해있어야함

2) apk downloader 은 5회 로 제한이 되어있음. -> apkpure.com 에서 자동다운 처리 필요.

3) STEP5 실행 파일 생성 후 공유했을 시 크롬드라이버가 다운받은 PC와 같은 경로에 존재하지 않을시 실행되지 않을 수 있음 -> 크롬드라이버 경로와 파일 함께 공유

 

 

 

 

참조 자료 : 파이썬으로 Apk Download 자동화: Selenium기반의 Apk 크롤러 (tistory.com)

댓글