당신은 방탄소년단(BTS)을 너무나도 좋아하는 아미입니다. 유튜브에 있는 BTS 동영상 리스트를 만들어 다른 아미들과 공유하고 싶습니다. 일일이 링크를 복사 및 붙여넣기 하지 않고 한번에 리스트를 가져와서 엑셀로 저장할 방법이 있으면 좋겠습니다.
이번 프로젝트의 미션은 다음과 같습니다.
이번 프로젝트를 파이썬으로 수행하기 위해 필요한 내용은 다음과 같습니다.
파이썬 기본 문법
함수와 모듈
셀레니움(Selenium) 설치하고 사용하기
판다스 DataFrame 활용
이번 프로젝트에 필요한 사전 지식은 다음의 책에서도 확인할 수 있습니다. 특히, 셀레니움을 이용해 유튜브 검색 결과를 가져오는 방법은 다음 책의 7장에서 찾아볼 수 있습니다. 7장에는 셀레니움을 활용한 웹 브라우저 제어와 웹 스크레이핑 방법을 자세히 설명하고 있으니 참고하면 도움이 될 것입니다.
여기서는 웹 스크레이핑을 통해 유튜브 검색을 수행하고 검색 결과를 엑셀 파일로 저장하는 방법에 대해 알아보겠습니다.
셀레니움(Selenium)을 이용하면 웹 브라우저로 유튜브 검색 결과를 가져올 수 있습니다. 파이썬 웹 스크레이핑 완벽 가이드에서는 셀레니움을 이용해 유튜브에서 '방탄소년단'을 검색해 결과를 가져오는 방법을 설명합니다.
다음은 '방탄소년단'을 검색 결과를 DataFrame 데이터로 가오는 예입니다.
df = get_data_from_youtube('방탄소년단') # get_data_from_youtube()은 미리 정의
df
(출력 결과)
| 제목 | 링크 | 조회수 | 업로드 | |
|---|---|---|---|---|
| 0 | BTS (방탄소년단) '작은 것들을 위한 시 (Boy With Luv) (feat.... | https://www.youtube.com/watch?v=XsX3ATc3FbA | 16억회 | 3년 전 |
| 1 | BTS (방탄소년단) 'Dynamite' Official MV | https://www.youtube.com/watch?v=gdZLi9oWNZg | 15억회 | 2년 전 |
| 2 | BTS (방탄소년단) 'DNA' Official MV | https://www.youtube.com/watch?v=MBdVXkSdhwU | 14억회 | 5년 전 |
| 3 | BTS (방탄소년단) 'MIC Drop (Steve Aoki Remix)' Offi... | https://www.youtube.com/watch?v=kTlv5_Bs8aw | 12억회 | 4년 전 |
| 4 | BTS (방탄소년단) 'IDOL' Official MV | https://www.youtube.com/watch?v=pBuZEGYXA6E | 11억회 | 4년 전 |
| 5 | BTS (방탄소년단) 'FAKE LOVE' Official MV | https://www.youtube.com/watch?v=7C2z4GqqS5E | 11억회 | 4년 전 |
| 6 | BTS (방탄소년단) '피 땀 눈물 (Blood Sweat & Tears)' Off... | https://www.youtube.com/watch?v=hmE9f-TEutc | 9억회 | 6년 전 |
| 7 | BTS (방탄소년단) 'Butter' Official MV | https://www.youtube.com/watch?v=WMweEpGlu_U | 8.2억회 | 1년 전 |
| 8 | [MV] BTS(방탄소년단) _ FIRE (불타오르네) | https://www.youtube.com/watch?v=ALj5MKjy2BU | 7.4억회 | 6년 전 |
| 9 | [MV] BTS(방탄소년단) _ DOPE(쩔어) | https://www.youtube.com/watch?v=BVwAVbKYYeM | 7.3억회 | 7년 전 |
| 10 | BTS (방탄소년단) 'Save ME' Official MV | https://www.youtube.com/watch?v=GZjt_sA2eso | 6.8억회 | 6년 전 |
| 11 | BTS (방탄소년단) 'Not Today' Official MV | https://www.youtube.com/watch?v=9DwzBICPhdM | 5.5억회 | 5년 전 |
| 12 | BTS (방탄소년단) 'Permission to Dance' Official MV | https://www.youtube.com/watch?v=CuklIb9d3fI | 5.4억회 | 1년 전 |
| 13 | BTS (방탄소년단) 'ON' Kinetic Manifesto Film : Come... | https://www.youtube.com/watch?v=gwMa6gpoE9I | 5.2억회 | 2년 전 |
| 14 | BTS (방탄소년단) '봄날 (Spring Day)' Official MV | https://www.youtube.com/watch?v=xEeFrLSkMm8 | 4.9억회 | 5년 전 |
| 15 | BTS (방탄소년단) 'Life Goes On' Official MV | https://www.youtube.com/watch?v=-5q5mZbe3V8 | 4.8억회 | 1년 전 |
| 16 | BTS (방탄소년단) 'Black Swan' Official MV | https://www.youtube.com/watch?v=0lapF4DQPKQ | 4.3억회 | 2년 전 |
| 17 | [MV] BTS(방탄소년단) _ Boy In Luv(상남자) | https://www.youtube.com/watch?v=m8MfJg68oCs | 4.1억회 | 8년 전 |
| 18 | BTS (방탄소년단) '불타오르네 (FIRE)' Official MV | https://www.youtube.com/watch?v=4ujQOR2DMFM | 3.4억회 | 6년 전 |
| 19 | BTS (방탄소년단) 'ON' Official MV | https://www.youtube.com/watch?v=mPVDGOVjRQ0 | 3.1억회 | 2년 전 |
출력 결과를 보면 유튜브 제목, 링크, 조회수, 업로드 시간을 가져온 것을 볼 수 있습니다.
이제 앞에서 만든 DataFrame 데이터(df)를 엑셀 파일로 출력해 보겠습니다.
excel_file = "BTS_동영상_리스트.xlsx"
df.to_excel(excel_file)
위 코드를 수행하면 아래와 같이 엑셀 파일이 생성된 것을 볼 수 있습니다.

이번 프로젝트에서는 셀레니움을 이용해 유튜브 검색 결과를 가져오는 방법에 대해 살펴봤습니다. 또한 검색 결과를 엑셀 파일로 저장하는 방법에 대해서도 살펴봤습니다. 그외 웹 스크레이핑을 위한 다양한 방법은 아래의 책을 참고하세요.
