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 |
---|
댓글