파이썬 크롤링 결과를 데이터프레임으로 모아서 to_csv로 엑셀 파일로 저장하고 싶음

조회수 598회
    while True:
        print("Getting page {}...".format(page))
        params["page"] = page
        data = requests.post(url, json=params).json()
        # uncomment to see all data:
        # print(json.dumps(data, indent=4))

        if not data["data"]:
            break

        # print some data:
        for d in data["data"]:
            print("{:<60} {} {}".format(d["mobile_title"], d["assets"], d["price"]))
        page += 1

크롤링해와서 데이터 정리하고자 코딩 작업 중에 있습니다.

현재 이렇게 코딩했을 때 각 페이지당 아래처럼 결과들이 나열되는데, 이러한 결과들을 데이터프레임으로 모으고 싶은데 어떻게 해야 할까요. 이렇게 데이터프레임으로 모아서 to_csv로 엑셀 파일로 저장되는 걸로 코딩하려고 합니다.

<결과값>

Getting page 1...
1 2 3
1 2 3
1 2 3

Getting page 2...
1 2 3
1 2 3
1 2 3

1 답변

  • 크롤링한 내용 하나하나를 딕셔너리형식으로 만들고, 그걸 쭉 list 에 수집합니다.

    그리고, 마지막에 수집한 딕셔너리의 리스트를 pd.DataFrame 의 생성인자로 넘기면 데이터프레임이 만들어집니다.

        data_dict_list = []
    
        while True:
            print("Getting page {}...".format(page))
            params["page"] = page
            data = requests.post(url, json=params).json()
            # uncomment to see all data:
            # print(json.dumps(data, indent=4))
    
            if not data["data"]:
                break
    
            # print some data:
            for d in data["data"]:
                data_dict_list.append({ "mobile_title":d["mobile_title"], "assets":d["assets"], "price":d["price"]})
                #print("{:<60} {} {}".format(d["mobile_title"], d["assets"], d["price"]))
            page += 1
    
        df = pd.DataFrame(data_dict_list)
    
        df.to_csv("크롤링수집결과.csv", encoding="utf-8", index=False)
    
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)