멍청해서 기록한다
파이썬 크롤링(유튜브 댓글) 주니어들이 봐도 가능 할 정도로 쉽게 본문
1. 파이썬 설치
https://www.python.org/downloads/release/python-366/
하.. 3.7이 현재 최신 버전인데 정신 건강에 좋으려면 3.6으로 설치하자 암걸린다.
2. 아나콘다 설치
https://www.anaconda.com/distribution/#download-section
주피터 실행 확인
3. 텐서플로우 설치(2020.02.07 추가: 텐서플로우 안써도 되더라...)
pip install tensorflow
하.. 현재 텐서플로우 버전 2.0 인데..
이것도 지원을 안하나봄 주피터가 안되는것 같은데.. 맘 편하게 언인스톨 후 재설치
pip install --ignore-installed --upgrade tensorflow==1.7.0
위는 보면 알겠지만 1.7 설치
만약 상위버전을 설치했다면
pip uninstall tensorflow실행 후 다운버전으로 재설치 해보자.
만약 그래도 안된다면
pip list 명령으로 상위버전 존재 하는지 체크
4. 셀레늄 설치
pip3 install selenium
하.. pip랑 pip3이랑 다른놈이더라.. 별게 다 걸리넼ㅋㅋㅋㅋ
5. 소스 생성
from selenium import webdriver as wd
from bs4 import BeautifulSoup
import time
import pandas as pd
from IPython.display import display
# 최대 필드 출력수 설정
pd.set_option('display.max_colwidth',100)
# 최대 컬럼수 설정
pd.set_option('display.max_columns', 10)
# 최대 로우수 설정
pd.set_option('display.max_rows', 100)
driver = wd.Chrome(r'드라이버 경로')
url = '가져올 영상 주소'
driver.get(url)
last_page_height = driver.execute_script("return document.documentElement.scrollHeight")
while True:
driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
time.sleep(1.0)
new_page_height = driver.execute_script("return document.documentElement.scrollHeight")
if new_page_height == last_page_height:
break
last_page_height = new_page_height
#else:
# last_page_height == new_page_height
# continue
#break
html_source = driver.page_source
driver.close()
soup = BeautifulSoup(html_source, 'lxml')
youtube_user_IDs = soup.select('div#header-author > a > span')
youtube_comments = soup.select('yt-formatted-string#content-text')
str_youtube_userIDs = []
str_youtube_comments = []
for i in range(len(youtube_user_IDs)):
str_tmp = str(youtube_user_IDs[i].text)
# print(str_tmp)
str_tmp = str_tmp.replace('\n', '')
str_tmp = str_tmp.replace('\t', '')
str_tmp = str_tmp.replace(' ','')
str_youtube_userIDs.append(str_tmp)
str_tmp = str(youtube_comments[i].text)
str_tmp = str_tmp.replace('\n', '')
str_tmp = str_tmp.replace('\t', '')
str_tmp = str_tmp.replace(' ', '')
str_youtube_comments.append(str_tmp)
#for i in range(len(str_youtube_userIDs)):
# print(str_youtube_userIDs[i], str_youtube_comments[i])
pd_data = {"ID":str_youtube_userIDs, "Comment":str_youtube_comments}
youtube_pd = pd.DataFrame(pd_data)
display(youtube_pd)