코딩코딩코딩

유튜브(Youtube) 크롤링 - selenium - 1 본문

파이썬/텍스트마이닝

유튜브(Youtube) 크롤링 - selenium - 1

hanshow113 2020. 8. 5. 17:57

셀레니움을 사용해서 Youtube 검색창 - 필터 설정

 

# Import Library
import requests
from bs4 import BeautifulSoup
import time
import urllib.request
from selenium.webdriver import Chrome
import re
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import datetime as dt

필요한 라이브러리를 불러옵니다. 

셀레니움을 사용하기 위해서는 최신 크롬버전, chromedriver.exe 파일이 필요합니다.

 

path = "C:\\Users\\Rectworks\\PycharmProjects\\chromedriver\\chromedriver.exe"
delay = 3
browser = Chrome(path)
browser.implicitly_wait(delay)

start_url = "https://www.youtube.com"
browser.get(start_url)
# browser.maximize_window()

browser.find_elements_by_xpath('//*[@id="search-input"]')[0].click()
browser.find_element_by_xpath('//*[@id="search-form"]/div/div/div/div[2]/input').send_keys("Keyword")
browser.find_element_by_xpath('//*[@id="search-form"]/div/div/div/div[2]/input').send_keys(Keys.RETURN)

위 코드를 통해서 Keyword 로 검색해서 엔터를 누르는 것까지 자동으로 실행됩니다.

 

이후 필터 버튼을 눌러 기준을 설정하려고 하는데 '오늘' 기준, '조회수' 기준으로 설정해보도록 하겠습니ㅏㄷ.

 

# 필터 기준 - 업로드 날짜 - 오늘
upload_date = browser.find_element_by_xpath('//*[@id="collapse-content"]/ytd-search-filter-group-renderer[1]')
click_list_1 = upload_date.find_elements_by_id("endpoint")
click_list_1[1].click()

# 필터 창이 내려가는 속도에 맞추기 위해서 임의로 sleep한 후에 버튼 클릭
time.sleep(delay)
browser.find_element_by_xpath('//*[@id="container"]/ytd-toggle-button-renderer/a').click()

# 필터 기준 - 정렬 기준 - 조회수
sorting_std = browser.find_element_by_xpath('//*[@id="collapse-content"]/ytd-search-filter-group-renderer[5]')
click_list_5 = sorting_std.find_elements_by_id("endpoint")
click_list_5[2].click()

필터링 기준 설정

필터 버튼을 누르고 기준을 필터링 기준을 선택하면 자동으로 필터 창이 닫힙니다.

여기에서 time sleep을 해준 후에 다시 필터 버튼을 클릭하는 방식으로 작동합니다.

 

다음 글에서는 필터링된 동영상들의 영상길이, 조회수, 좋아요 등을 가져오는 작업을 해보도록 하겠습니다.

Comments