플그래밍/파이써언

[파이썬] 013. YouTube 채널 최근 영상 목록 추출

훗티v 2021. 4. 23. 06:51

YouTube 채널 최근 영상 목록 추출

- BeautifulSoup으로 유튜브 사이트를 긁어오면 텍스트 형태의 데이타 호출 가능

- 각 채널의 최근 영상 제목, 조회수, 업로드 시간 등의 정보 포함

- 원하는 정보를 정리해서 표시해주려는 목적

- 각 유튜브 채널의 'Video' 메뉴를 클릭하면 주소창에 해당 채널의 영문 채널ID 확인 가능 (names에 추가)

 

파이썬 모듈

bs4

BeautifulSoup

requests

 

파이썬 코드

from bs4 import BeautifulSoup
import requests

print('============================================================================================================')

# 한국 지역 유튜브 순위 - 채널 목록(유튜브.com/c/../'채널명'/videos)
names = ['https://www.youtube.com/c/BLACKPINKOFFICIAL/videos',
         'https://www.youtube.com/c/HYBELABELS/videos',
         'https://www.youtube.com/c/BANGTANTV/videos',
         'https://www.youtube.com/c/SMTOWN/videos',
         'https://www.youtube.com/c/1MILLIONDanceStudioofficial/videos']

for name in names:

    URL = name
    headers = {
        "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 OPR/67.0.3575.115'}

    page = requests.get(URL, headers=headers)
    soup = BeautifulSoup(page.content, 'html.parser', from_encoding="utf8")
    soup = str(soup)
    keyword = '"height":188}]},"title":{"runs":[{"text":"'
    buffer = len(keyword)

    # 한글 브라우저
    uploader = '게시자:'
    result = soup.find(keyword)

    # 키워드 추출
    coordinates = [i for i in range(len(soup)) if soup.startswith(keyword, i)]

    # 표시할 검색 결과 개수
    f = 5
    coordinates = coordinates[:f]

    length = name[26:].find('/')
    print(f'[{name[26:26+length]}]', end="\n\n")

    for item in coordinates:
        item = item + buffer
        title = soup[item:item+100]
        title_end = title.find('"}],')
        title_end = title_end + item
        title_final = soup[item:title_end]
        if len(title_final) < 1:
            pass
        else:
            print(title_final)

    print('============================================================================================================')

- 'names' 리스트에 반복되는 부분은 URL 변수로 이동

 

추출 결과

- 채널명 표시, 채널명은 각 채널 사이트에서 'Video' 메뉴 클릭 시 주소창에서 확인 가능

- 파이썬 코드에서 f 변수 수정 시 호출되는 영상 제목 개수 변경 가능

- 채널 초이스, 국내 유튜브 순위 상위 5위 채널

 

 

 

 

 

 

728x90