본문 바로가기
Programming/Python

파이썬 유튜브 크롤링 셀레니움 1편

by 코딩하는 금융인 2021. 6. 14.

파이썬 Selenium 유튜브(Youtube) 크롤링

목표 : 파이썬 자동화 모듈 selenium의 webdriver를 사용하여 유튜브에 원하는 검색어를 던져 나오는 영상 데이터를 대량 및 자동으로 수집하기

던지는 검색어에 따라 나오는 유튜브 영상의 썸네일, 제목, 조회수 등 동적인 Data를 수집해야 하므로 selenium 활용!


▶ 검색 리스트

sample data : 코스피 시가총액 상위 10개 종목

cd_idx cop_youtube_search price
1 삼성전자 80,500
2 SK하이닉스 127,000
3 NAVER 387,000
4 카카오 142,500
5 삼성전자우 74,200
6 LG화학 827,000
7 삼성바이오로직스 853,000
8 현대차 238,000
9 삼성SDI 639,000
10 셀트리온 281,000

 

※ 해당 Data는 유튜브 크롤링을 보여주기 위한 예시입니다.

 

▶ 모듈 import

# 데이터 처리
import pandas as pd
from pandas import DataFrame
import openpyxl

# selenium
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager # webdriver-manager 패키지 다운로드
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys

# 시간 명시
from tqdm import tqdm
import time

# 오류 확인
import traceback

각 모듈은 Terminal에서 pip install이나 사용하는 파이썬 툴에 따라서 packages를 장착해주시면 됩니다!

 

* Selenium을 사용하기 위해선 webdriver가 필수적입니다. 따라서 webdriver 프로그램은 따로 깔아주셔야 합니다.

- webdriver 다운로드 사이트 바로가기

 

▶ webdriver option 설정

## Webdirver option 설정
options = webdriver.ChromeOptions()
# options.add_argument('headless') # 크롬 띄우는 창 없애기
options.add_argument('window-size=1920x1080') # 크롬드라이버 창크기
options.add_argument("disable-gpu") #그래픽 성능 낮춰서 크롤링 성능 쪼금 높이기
options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36") # 네트워크 설정
options.add_argument("lang=ko_KR") # 사이트 주언어
driver = webdriver.Chrome(ChromeDriverManager().install(),chrome_options=options)

webdriver 옵션에 대한 설명은 주석을 통해 달아놨습니다.

 

▶ 유튜브 사이트 살펴보기

유튜브 검색 화면

유튜브는 검색어를 던지고 스크롤을 내려야 영상에 대한 정보가 나타남.

( 동적인 data이므로 셀레니움 활용 )

따라서, 자동으로 스크롤을 내려주는 코드 필요!

# webdriver Scroll Down!
driver.get(youtubeUrl)
time.sleep(0.1)
# driver.execute_script("window.scrollTo(0, 80000)")
no_of_pagedowns = 10
elem = driver.find_element_by_tag_name("body")
# print("Scrolling Down!")
while no_of_pagedowns:
	# print(10 - no_of_pagedowns, "th Scroll")
	elem.send_keys(Keys.PAGE_DOWN)
	time.sleep(0.5)
	no_of_pagedowns -= 1

 

▶ 검색어 리스트 다운로드

# 엑셀에서 검색어 추출
df = pd.read_excel("c:/sample data.xlsx", sheet_name= "기업정보")  # 경로 바꿔주셔야돼요!
data_list = []

판다스 read_excel 활용하여 데이터 다운로드

 

다음편 보러가기

2021.06.22 - [Programming & Data Analysis/Python] - 파이썬 유튜브 크롤링 셀레니움 2편

 

반응형

댓글