유튜브 댓글 크롤링하기
동적 크롤링을 이용하여 댓글 가져오기
데이터프레임 형식으로 저장할 때 인덱스 값으로 숫자가 붙는 것을 해결하기 위해
아래 코드 사용
컬럼이름을 지정하지 않으면 for문으로 돌릴 때 인덱스 번호만 출력됨..(0,1,2,3,...으로)
댓글 가져오는 코드를 먼저 짠 다음
함수로 처리하여
url반복적으로 가져오는 코드로 작성
오류 코드 발생
Traceback (most recent call last):
File "D:\bigdata0709\jspstudy\jspws\MyPython\newpj\youtub\comment_c(revised).py", line 101, in <module>
getCmt(i)
File "D:\bigdata0709\jspstudy\jspws\MyPython\newpj\youtub\comment_c(revised).py", line 96, in getCmt
result.to_csv(title1+'.csv', encoding='utf-8')
File "C:\Anaconda3\lib\site-packages\pandas\core\frame.py", line 1745, in to_csv
formatter.save()
File "C:\Anaconda3\lib\site-packages\pandas\io\formats\csvs.py", line 156, in save
compression=self.compression)
File "C:\Anaconda3\lib\site-packages\pandas\io\common.py", line 400, in _get_handle
f = open(path_or_buf, mode, encoding=encoding)
OSError: [Errno 22] Invalid argument: '제목?.csv'
->저장 시 파일 이름에 특수문자 들어가면 발생하는 오류
특수문자 제외처리 필요함
title = re.sub(r'[^\w]',' ',title)로 특수문자 제거한 뒤 저장
댓글이 더이상 안나올 때까지 스크롤을 내린 다음 댓글을 가져오려고 코드를 일부 수정
전체 댓글 수와 댓글을 저장한 list의 길이가 같으면 스크롤 내리기를 멈추게 하려고 했는데
댓글에 달린 대댓글...까지 전체 댓글수에 포함되어있어서
그것까지 계산했는데 오류가나고, 만 개 정도 되는 댓글은 스크롤 내리는것도 시간 너무 오래걸려서
일단은 3500개까지 저장하면 중간에 멈추는 것으로 수정함
그러나 댓글이 하나도 없을 경우.. 무한으로 스크롤이 내려가게 되어버려서 추후 수정필요