본문 바로가기

Data Science : Study/2. Data Engineering (FastCampus)

3강-5. Python Albums API 사용해보기, Pagination (Spotify)

반응형

썸네일

 

 

 

Albums API를 사용하기 위해서는 먼저 artist id 값이 필요하다

→ Search API requet 값에서 id 가져오기!

https://hellominji.tistory.com/55

 

Pagination

- 한정된 네트워크 자원을 효율적으로 활용하기 위해, 쿼리의 결과값으로 리턴된 리소스를 분할하여 전달하는 것

- 데이터가 많고, 한 번에 가져올 수 있는 데이터의 양은 한정되어 있을 때, 페이지네이션 핸들링을 통해 일정 길이로 끊어서 전달

- 현재의 위치를 의미하는 offset, 한번 응답 시 돌려줄 갯수를 의미하는 limit, 두 가지의 파라미터를 활용

- 여기서는 가져와야 하는 앨범 리스트가 10,000개면 모두 한번에 보여주는 것이 아닌 100개씩 분할하여 보여주는 것이라고 이해하면 된다.

 

- Spotify Albums API에서의 paging object : dict 형태인 response 값에 대해 각 key에 대한 설명

  - href : request url

  - item : requet data list

  - limit

  - next : 다음 정보를 위한 url

  - offset : 시작점

  - total : 전체 앨범 수

 

 

 

! 목표
앨범 데이터를 가져온다. (list 형태)

 

Spotify Albums API 사용

    r = requests.get("https://api.spotify.com/v1/artists/3Nrfpe0tUJi4K4DXYWgMUX/albums", headers=headers)
    # 3Nrfpe0tUJi4K4DXYWgMUX : id값

    raw = json.loads(r.text)

    total = raw['total']
    offset = raw['offset']
    limit = raw['limit']
    next = raw['next']

    albums = []
    albums.extend(raw['items'])    # 현재까지 가져온 item을 albums 리스트에 추가

limit default = 20

☞ 그보다 많은 데이터를 가져오기 위해서는 아래의 과정이 필요하다.

## 100개 추출하는 경우

    count = 0
    while count < 100 or not next:

        r = requests.get(raw['next'], headers=headers)   # 위와 다른 r. 새로운 요청을 했기 때문에 offset부터 새로 추출!
        raw = json.loads(r.text)
        next = raw['next']
        print(next)

        albums.extend(raw['items'])
        count = len(albums)

    print(len(albums))

 

 

 

 

 

이런 내용이 더 있으면 좋겠다, 이건 뭐라는지 모르겠다, 그 외의 어떤 얘기든 댓글로 남겨주세요!

 

 

 

반응형