티스토리 뷰

트리 형태의 json 데이터를 가져오는데 재귀없이 나만의 신박한 방법을 찾아보겠다고 3시간 정도 끙끙거리다가 결국 재귀를 썻다.

근데 아뿔싸 재귀마저도 구현을 잘 못하다니 역시 난 멍청하다

그래도 디버깅하면서 발견해서 다행.. 아 부끄럽지만 박제해서 앞으론 이런 실수 없도록 해야겠다

import requests

BASE_URL = "http://hn.algolia.com/api/v1"


def make_detail_url(object_id):
    return f"{BASE_URL}/items/{object_id}"


def get_comments_from_id(rs_json: str = "", object_id: int = 0) -> list:
    if rs_json == "":
        url: str = make_detail_url(object_id)
        rs_json: str = requests.get(url).json()["children"]

    comments_list = []
    for rs in rs_json:
        author = rs.get("author", None)
        if author is not None:
            my_id: int = rs["id"]
            parent_id: int = rs["parent_id"]
            time: int = rs["created_at_i"]
            text: str = rs["text"]
            comments_list.append([my_id, parent_id, author, time, text])

        if len(rs["children"]) > 0:
            comments_list += get_comments_from_id(rs["children"])
        else:
            continue
            # 리턴을 왜 여기다 넣었을까 하..
            # return comments_list

    return comments_list


if __name__ == "__main__":
    for i in get_comments_from_id("", 27883961):
        print(i)
        print()

'Python' 카테고리의 다른 글

[Python] Care points when getting value in dictionary using key  (0) 2021.08.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함