본문 바로가기

DEV/Python

[Python] 안드로이드 앱 버전 크롤링하기

반응형

파이썬을 이용해 플레이스토어와 원스토어에 배포되어있는 앱의 버전을 조회하는 코드입니다.

 

플레이스토어 앱 버전 조회

글 작성일 기준으로 정상 동작하는 코드입니다.
플레이스토어 내의 HTML 구조 변경에 따라 동작하지 않을 수 있습니다.
# Selenium 크롤링
# pip install selenium
from selenium import webdriver
from selenium.webdriver.common.service import Service
from selenium.webdriver.common.by import By

# 최신 크롬드라이버 자동로드
# pip install webdriver-manager
from webdriver_manager.chrome import ChromeDriverManager

def get_version_play(app_url):
	driver = webdriver.Chrome(ChromeDriverManager().install())
    driver.get(app_url)
    driver.find_element(By.CSS_SELECTOR, '[jsaction="JIbuQc:trigger.hdtuG"]').click()
    #앱 상세정보가 뜨는 딜레이가 있어 sleep으로 지연처리
    sleep(3)
    elements = driver.find_elements(By.CSS_SELECTOR, '.G1zzid .sMUprd .reAt0')
    if len(elements) > 0:
        print(elements[0].text)
        return elements[0].text
        
print(get_version_play(f'https://play.google.com/store/apps/details?id={패키지명}'))
# 실행결과 : 4.2.3

 

원스토어 앱 버전 조회

글 작성일 기준으로 정상 동작하는 코드입니다.
원스토어 내의 API 변경에 따라 동작하지 않을 수 있습니다.
def get_version_one(app_url):
    html = requests.get(app_url)
    data = html.json()
    
    
    '''
    data 구조
    {
        "result": {
            "code": "000",
            "desc": "성공"
        },
        "prodId": "상품ID",
        "verNm": "4.2.3",
        "verCd": "40203",
        "longVerCd": "40203",
        "title": "앱이름",
        "topMenuId": "",
        "topMenuNm": "앱",
        "menuId": "",
        "menuNm": "",
        "sellerNm": "",
        "game": false
    }
    '''
    
	return data['verCd']    
    
print(get_version_one(f'https://openapi.onestore.co.kr/api/devcenter/getAppVersion/v1?pkgNm={패키지명}')
# 실행결과 : 40203

 

반응형