본문 바로가기
Python

[error] pytube 다운로드 에러: AttributeError: 'NoneType' object has no attribute 'span'

by 전봇대파괴자 2021. 11. 23.

얼마 전까지 잘 사용하던 pytube에서 영상을 다운로드하는 데 갑자기 위와 같은 에러가 발생했습니다. 

깜짝 놀라서 검색을 해 봤더니 비교적 최근에 발견된 이슈인 모양입니다(stackoverflow 날짜 기준 어제).

해결 방법을 찾아 공유합니다. 

 

우선은 pytube 디렉토리를 찾아야 합니다. 

find 명령어로 아래와 같이 pytube 디렉토리를 찾아 이동합니다. (Mac의 경우 command+space bar로 검색할 수 있습니다.)

find / -name pytube # pytube 디렉토리 찾기
cd "pytube 디렉토리 경로" # ex> C:\Python39\lib\site-packages\pytube 
vi parser.py # parser.py 수정

 이동한 후 parser.py의 아래 부분을 그 다음 블록과 같이 수정합니다.

...
result = []
curr_substring = js_array[1:]

comma_regex = re.compile(r",") 
func_regex = re.compile(r"function\([^)]+\)") # 152번째 줄

while len(curr_substring) > 0:
...
...
result = []
curr_substring = js_array[1:]

comma_regex = re.compile(r",") 
func_regex = re.compile(r"function\([^)]?\)") # 152번째 줄 # '+'를 '?'로 변경

while len(curr_substring) > 0:
...

다시 pytube 코드를 실행하면, 문제 없이 동영상이 다운로드됩니다. 

 

+2021.11.23 11:32 기준 다시 정상적으로 다운로드가 진행되고 있습니다. 오히려 위처럼 고쳤을 때 다운로드가 진행되지 않는 모습이 보입니다. 

 

참고 문서

https://stackoverflow.com/questions/70060263/pytube-attributeerror-nonetype-object-has-no-attribute-span