[실습] 파이썬 크롤링으로 iOS앱 실시간 순위구하기

Posted by Pando on August 15, 2020

파이썬 크롤링으로 iOS앱 실시간 순위구하기

App Store에 무료앱순위를 보면 다음과 같다.

App Store iOS rank
iOS앱 실시간 순위를 크롤링하기위해 사이트를 검색했다.
그러나, 어디에도 웹에서 iOS순위를 찾을 수 없었다.

그래서 실시간 iOS앱순위를 보여주는 여러 사이트중 fnd.io를 찾았다.

iOS rank site
iOS 순위 사이트에서 직접 크롤링을 하는게 아니라, iOS 순위 사이트에게서 이미 크롤링한 정보를 보여주는 사이트에서 크롤링하는 것이 탐탁치않았던 나는 혹시나 하는 마음에 개발자 도구로 Network를 보았다.

요청을 보내는 곳중에 Apple의 itunes 사이트가 있었고, Apple은 RSS를 제공하고 있었다..

내가 찾은 방법은 다음과 같다.

  1. 크롬 브라우져에서 F12를 누르면 개발자도구가 켠다.
  2. Network 탭에서 XHR만을 누르고 새로고침을 한다.
  3. json으로 되어있는 요청을 누른다.
  4. Request URL이 https://itunes.apple.com/kr/rss/topfreeapplications/limit=10/json 를 발견한다.


그래서 훨씬 쉽게 문제가 해결되었다.

프로그래밍적으로 사고하기

내가 생각하는 순서는 다음과 같다.

  1. 필요한 Library Import
  2. iOS 순위 RSS URL을 requests로 정보 가져오기
  3. json으로 정보 추출

코드

1. 필요한 Library Import

1
2
# 1. 필요한 라이브러리를 import
import requests

2. requests로 해당 사이트 가져오기

1
2
3
# 2. requests로 해당 사이트 가져오기
ios_rank_url = "https://itunes.apple.com/kr/rss/topfreeapplications/limit=10/json"
response = requests.get(ios_rank_url)

3. json으로 정보 추출

1
2
3
4
5
6
7
# 3. json으로 정보 추출
response_data = response.json()
ios_app_list = response_data["feed"]["entry"]
for index, ios_app in enumerate(ios_app_list):
    rank = index + 1
    name = ios_app["im:name"]["label"]
    print(rank, name)

참고사항

URL을 보면 알겠지만, limit=10 이라는 부분에 다른 숫자로 바꾸면 그만큼 개수를 가져온다.
따라서 원하는 만큼 요청할 수 있다!

완성코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 필요한 라이브러리를 import
import requests

# 2. requests로 해당 사이트 가져오기
ios_rank_url = "https://itunes.apple.com/kr/rss/topfreeapplications/limit=10/json"
response = requests.get(ios_rank_url)

# 3. json으로 정보 추출
response_data = response.json()
ios_app_list = response_data["feed"]["entry"]
for index, ios_app in enumerate(ios_app_list):
    rank = index + 1
    name = ios_app["im:name"]["label"]
    print(rank, name)

실행결과

1
2
3
4
5
6
7
8
9
10
1 BBQ Chicken (BBQ 치킨)
2 REFACE: face swap videos
3 당근마켓 - 중고거래 필수앱
4 배달의민족
5 Netflix
6 카카오톡 KakaoTalk
7 여기어때 - 호텔, 모텔, 펜션 최저가 예약!
8 야놀자
9 YouTube
10 TikTok 틱톡