유튜브로 새로운 수익모델을 찾기위한 채널 분석을 시도하고 있다. (기존 채널에 영상을 새로 올려야 하는데 요즘 못 올리고 있다 ㅠㅠ) 솔직히 노가다를 해도 되는데 파이썬을 배웠으면 자동화를 하는게 맞지 않을까 싶고, 재밌는 실험들을 해보고 싶어서 코드를 짜고 있다.
셀레니움으로 페이지 자동 번역, 키 입력 정보가 필요하신 분들은 밑으로 내려주세요!
진행할 목록
- 페이지 성별 분석 (이름 데이터셋 수집 완료, CNN 카테고리 분류 완료, 검증 단계) => 얘 때문에 자동번역이 필요했음
- 페이지 연령 분석, 댓글 문체로 분류 도전 (자체 유튜브 조회수 100만 영상들에서 댓글 크롤링 후, 연령, 성비 분석 후 학습)
- 댓글로 영상 주제 분석 (긍정, 부정, 어떤 반응으로 영상이 화제가 됐는지 체크)
- 어그로 확인 (같은 주제, 같은 업로드 날짜 => 왜 다른 조회수? 썸네일, 키워드)
셀레니움 자동 번역 필요했던 이유?
연령대가 있는 층들은 대부분 유튜브 계정 닉네임이 본인 이름으로 되어 있어서 성별 분석하기가 조금 수월해 보였다. 하지만 영어로 이름을 입력하신 분들도 있어서 이걸 자동으로 번역해서 닉네임을 크롤링 해야 했다. 문제는 셀레니움으로 자동 번역이 잘 되지 않았다.
-파이썬에서 셀레니움 웹 사이트 언어 변경
-Translate the webpage opened via Selenium Webdriver to English
-Translate webpage language using Selenium
-Select an Option from the Right-Click Menu in Selenium Webdriver
-Modifying the language option in selenium
이렇게 다양하게 검색을 했는데도 문제가 잘 해결 되지 않았다. (구글이 PageRank를 활용한 알고리즘이라고 하는데 SEO 시스템을 잘 몰라서 외국에서 검색이 될지는 모르겠지만 그래도 찾아주시는 분들은 도움이 됐으면 좋겠다.) 일단 시도했던 것들에 대해서 간단하게 보여주자면
1
2
3
4
5
|
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--lang=ko_KR")
options.add_argument("--lang=ko")
|
cs |
셀레니움에서 크롬옵션으로 기본 언어를 설정하면 된다고 하지만 내 경우는 되지 않았다. --lang=en 영어로도 안 된다는 사람들이 많았다. 그래서 계속 구글링을 시도했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
from selenium import webdriver
#1
prefs = {
"translate_whitelists": {"en":"ko"},
"translate":{"enabled":"true"}
}
options.add_experimental_option("prefs", prefs)
#2
prefs = {
"translate_whitelists": {"your native language":"ko"},
"translate":{"enabled":"True"}
}
options.add_experimental_option("prefs", prefs)
#3
options.add_experimental_option('prefs', {'intl.accept_languages': 'ko,ko_KR'})
|
cs |
translate_whitelists에서 en -> ko로 바꿔주면 된다고 친절하게 설명이 되어있는데 이것 또한 되지 않았다. 그래서 영어권에서는 2번, 3번 방법의 경우를 추천했는데 이것 또한 되지 않았다^^
그래서 생각한 방법이 오른쪽 마우스로 번역하면 되겠거니 싶었다. 마우스 좌표 값을 설정해서 오른쪽 버튼을 클릭하기 번거로워서, 키보드로 마우스 오른쪽 버튼을 누르는 방법이 있나 찾아보니 shift + f10이라고 구글에서 친히 알려주신다. 그리고 Translate에 'T' 앞 글자를 따서 단축키를 만들지 않았을까 하고 T를 눌러보니 번역이 됐다!
그리고 send_keys(Keys.SHIFT + Keys.F10 + 't')를 해봤더니 t가 눌리지 않았다. 이런...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
#1
body = driver.find_element_by_tag_name('body')
body.send_keys(Keys.SHIFT, 'a')
#2
action = webdriver.ActionChains(driver)
# 한번에 버튼 누르기
action.send_keys(Keys.SHIFT, Keys.F10, 't').perform()
# 키를 누르고 떼기
action.key_down(Keys.SHIFT).key_down(Keys.F10).send_keys("t").key_up(Keys.SHIFT).key_up(Keys.F10).perform()
|
cs |
ctrl + f, shift + a 처럼 '페이지 내 검색어 찾기', '전체 선택'같이 셀레니움에서 번역이 아닌 단순 키 입력을 원하시는 분이라면 1번 방법을 사용하시면 됩니다. 이것도 안 돼서 더 찾아보니, ActionChains를 활용하면 된다고 해결책으로 제시했는데 이것도 되지 않았다.
1
2
3
4
5
6
|
import pyautogui
pyautogui.hotkey('shift','F10')
for i in range(7):
pyautogui.hotkey('down')
pyautogui.hotkey('enter')
|
cs |
그래서 가장 원초적인 방법을 사용했다. 이전에 파이썬으로 계산기 들어가서 숫자 계산할 때 사용했던, 마우스 / 키보드 자동 조작 모듈을 사용했다.
되긴 됐다. 자동으로 한국어 번역이...!
다만 단점이 있다면 headless로 작업이 되지 않다는 점과 pyautogui를 사용하기 때문에 초반에 다른 걸 만지면 안 된다. 좋게 생각하면 셀레니움으로 크롤링이 잘 작동되고 있구나를 확인한다고 생각하자.
다음은 유튜브 정보, 댓글 크롤링 방법들에 대한 포스팅을 진행하려고 한다. 요즘 유튜브가 지속적으로 페이지 UI랑, 아이콘 설정들을 조금씩 바꾸고 있어서 며칠 전 됐던 코드도 오류가 났다. 그래서 오늘 조금 수정을 했는데 글쓰는데 시간이 걸려서...
'할 수 있다. 파이썬' 카테고리의 다른 글
(3) 실무 엑셀 함수 VLOOKUP, INDEX MATCH 시간 50배 단축, 파이썬으로 한 방에 잡자 (0) | 2022.01.21 |
---|---|
(2) 파이썬 엑셀 사무 자동화 : 보안 걸린 엑셀 한 번에 뚫기 openpyxl? xlwings? (2) | 2022.01.20 |
(1) 파이썬 엑셀 사무 자동화 : 회사 사내망 때문에 좌절한 당신... (0) | 2022.01.19 |
유튜브 크롤링(3) 올인원 - 채널 제목, 댓글, 조회수, 자막까지 (9) | 2021.09.29 |
유튜브 크롤링(2) - ㄹㅇ 초간단 유튜브 자막 다운 & 추출 (문장분리까지) (1) | 2021.09.28 |