[Python] 자동으로 YouTube 비디오 다운로드
15716 단어 tutorialproductivityvscodepython
요구 사항:
설정
파이튜브 설치:
pip install pytube
Clicknium 설치:
Visual Studio Code Extension 마켓플레이스에서 Clicknium 검색:
환영 페이지에 따라 구성을 완료하십시오.
웹 브라우저를 시작합니다.
youtube.py와 같은 VS Code로 Python 파일을 만듭니다.
from clicknium import clicknium as cc
def main():
tab = cc.chrome.open("https://www.youtube.com")
if __name__ == "__main__":
main()
F5를 눌러 코드를 실행합니다. Chrome 브라우저가 열리고 YouTube 홈페이지로 이동합니다.
포착:
예를 들어 Taylor Swift와 같은 Youtuber의 홈 페이지로 이동하여 비디오 링크를 가져옵니다. 코끼리를 냉장고에 넣는 5단계와 같은 것:
4개의 관련 UI 요소가 있습니다.
Clicknium은 로케이터(일명 선택기)를 사용하여 UI 요소를 찾습니다. 로케이터를 생성하는 레코더를 제공합니다. 위의 코드를 사용하여 브라우저를 열고 VS Code로 돌아가 레코더를 시작할 수 있습니다.
화면의 요소 위로 마우스를 가져간 후 Ctrl 키를 누르고 클릭하면 UI 요소에 대한 로케이터가 자동으로 생성됩니다. 검색 상자, 검색 버튼, 오른쪽 상단 모서리에 있는 Taylor의 이름을 캡처합니다.
각 캡처는 UI 요소에 대한 로케이터 대상을 생성합니다. 로케이터의 이름을 의미 있는 이름으로 바꿀 수도 있습니다. 완료 버튼을 클릭하고 캡처 후 VS Code로 돌아갑니다.
로케이터를 find_element 함수에 전달하여 UI 요소를 가져옵니다. 그런 다음 set_text 기능을 사용하여 검색 상자에 "Taylor Swift"라는 텍스트를 입력합니다. 다음 줄은 검색 버튼을 얻기 위해 같은 방법을 사용하고 클릭 기능을 사용하여 마우스 클릭을 나타냅니다. 위의 코드를 실행하면 홈페이지에 들어갈 수 있습니다. 동일한 방법을 사용하여 비디오 목록으로 이동합니다.
from clicknium import clicknium as cc, locator
from clicknium.common.enums import *
def main():
tab = cc.chrome.open("https://www.youtube.com")
tab.find_element(locator.chrome.youtube.searchBar).set_text(
"Taylor Swift", by='sendkey-after-click')
tab.find_element(locator.chrome.youtube.button_search_icon_legacy).click()
tab.find_element(locator.chrome.youtube.TS).click()
if __name__ == "__main__":
main()
위 이미지의 비디오에 대한 모든 주소를 가져와야 합니다. 주소는 로케이터 속성에서 얻을 수 있지만 너무 많은 로케이터를 생성해야 한다면 지루할 것입니다. Clicknium Recorder에서 제공하는 유사한 요소 캡처 기능을 사용할 수 있습니다. 유사한 요소 버튼을 클릭하고 동일한 방법을 사용하여 단일 요소를 캡처합니다. Clicknium은 유사한 요소를 자동 감지하고 모든 유사한 UI 요소를 대상으로 하는 하나의 로케이터를 생성합니다.
tab = cc.chrome.open("https://www.youtube.com")
tab.find_element(locator.chrome.youtube.searchBar).set_text(
"Taylor Swift", by='sendkey-after-click')
tab.find_element(locator.chrome.youtube.button_search_icon_legacy).click()
tab.find_element(locator.chrome.youtube.TS).click()
tab.find_element(locator.chrome.youtube.div_video).click()
tab.wait_appear(locator.chrome.youtube.a_video_title)# wait untill loading videos finish
vidioTitles = tab.find_elements(locator.chrome.youtube.a_video_title)
비디오 목록의 비동기식 로드로 인해 UI 요소가 나타날 때까지 기다리려면 wait_appear를 사용해야 합니다. 로케이터가 여러 동영상을 대상으로 했기 때문에 find_elements를 사용하여 UI 요소 배열을 가져옵니다. href에서 가져온 비디오에 관련 경로를 추가하여 YouTube 주소에서 비디오 URL을 얻을 수 있습니다.
Pytube를 사용하여 비디오 URL로 비디오를 가져옵니다. Pytube는 주어진 해상도에 따라 비디오를 다운로드할 수 있습니다. 나열된 일부 스트림에는 비디오 코덱과 오디오 코덱이 모두 있는 반면 다른 스트림에는 최고 품질의 스트림을 위해 비디오 또는 오디오만 있는 것을 알 수 있습니다. 자세한 내용은 Working with Streams and StreamQuery
암호:
from pytube import YouTube
from clicknium import clicknium as cc, locator
from clicknium.common.enums import *
def downloadVideo(url):
SAVE_PATH = "C:\\Users\\Kay\\Downloads\\Youtube"
try:
yt = YouTube(url)
yt.streams.filter(res="1080p").first().download(output_path=SAVE_PATH)
except:
print("Connection Error") # to handle exception
# filters out all the files with "mp4" extension
print('Task Completed!')
def main():
urlArrary = []
tab = cc.chrome.open("https://www.youtube.com")
tab.find_element(locator.chrome.youtube.searchBar).set_text(
"Taylor Swift", by='sendkey-after-click')
tab.find_element(locator.chrome.youtube.button_search_icon_legacy).click()
tab.find_element(locator.chrome.youtube.TS).click()
tab.find_element(locator.chrome.youtube.div_video).click()
tab.wait_appear(locator.chrome.youtube.a_video_title)
videoTitles = tab.find_elements(locator.chrome.youtube.a_video_title)
for locat in videoTitles:
url = "https://www.youtube.com" + locat.get_property("href")
urlArrary.append(url)
tab.close()
for v in urlArrary:
downloadVideo(v)
if __name__ == "__main__":
main()
Reference
이 문제에 관하여([Python] 자동으로 YouTube 비디오 다운로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kayyolo/python-download-youtube-videos-automatically-3i58텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)