본문 바로가기
빅파이

유튜브 크롤링하기(제목, 주소, 조회수)

by 박완밥 2020. 6. 1.
728x90
from selenium import webdriver
from bs4 import BeautifulSoup as bs
import pandas as pd
from selenium.webdriver.common.keys import Keys
import time

keyword = '오마이걸'
url = 'https://www.youtube.com/results?search_query={}'.format(keyword)

driver = webdriver.Chrome('./chromedriver.exe')
driver.get(url)
soup = bs(driver.page_source, 'html.parser')
driver.close()

name = soup.select('a#video-title')
video_url = soup.select('a#video-title')
view = soup.select('a#video-title')

name_list = []
url_list = []
view_list = []

for i in range(len(name)):
    name_list.append(name[i].text.strip())
    view_list.append(view[i].get('aria-label').split()[-1])
for i in video_url:
    url_list.append('{}{}'.format('https://www.youtube.com',i.get('href')))
    
youtubeDic = {
    '제목': name_list,
    '주소': url_list,
    '조회수': view_list
}

youtubeDf = pd.DataFrame(youtubeDic)

youtubeDf.to_csv('오마이걸유튜브.csv', encoding='', index=False)

- 검색하는 값에 따라 크롤링을 할 수 있게 keword를 설정해준다.

- a id ='video-title' 안에 제목/주소/조회수가 다 들어있는 걸 볼 수 있다.

- get 함수를 사용해 속성값을 빼내주고

- 조회수는 aria-label 속성에서 split()을 사용해 문자열을 나눠주고 마지막 값인[-1] 조회수로 사용해준다.

- 이모티콘 때문에 저장아 안되서 인코딩은 공백으로 표시한다.

 

짜란 완성!!

 

728x90
반응형

'빅파이' 카테고리의 다른 글

Decision Tree2 실습( Mushroom 데이터)  (0) 2020.07.14

댓글