crawling
Selenium & BeautifulSoup 연동 방법 / 유우키 영상 크롤링하기
hayleyhell
2023. 1. 27. 22:19
1. 반복문으로 스크롤 횟수 제한
# 7번 스크롤
for i in range(7):
# 맨 아래로 스크롤을 내린다.
browser.find_element(By.CSS_SELECTOR, 'body').send_keys(Keys.END)
# 스크롤 사이 페이지 로딩 시간
time.sleep(1)
if i >= 6:
break
2. selenium으로 크롤링하기
# selenium
contents = browser.find_elements(By.CSS_SELECTOR, 'div.text-wrapper.style-scope.ytd-video-renderer')
for content in contents :
title = content.find_element(By.CSS_SELECTOR, '#video-title').get_attribute('title')
url = 'https://www.youtube.com/' + content.find_element(By.CSS_SELECTOR, '#video-title').get_attribute('href')
view = content.find_element(By.CSS_SELECTOR, '#metadata-line > span:nth-child(3)').text
createdAt = content.find_element(By.CSS_SELECTOR, '#metadata-line > span:nth-child(4)').text
ws.append([title, url, view, createdAt])
3. selenium & BeautifulSoup 연동하기
# selenium으로 가져오면 느리다.
# selenium & BeautifulSoup 연동 방법
html = browser.page_source
soup = BeautifulSoup(html, 'html.parser')
contents = soup.select('div.text-wrapper.style-scope.ytd-video-renderer')
for content in contents :
title = content.select_one('a#video-title').attrs['title'] # attrs를 선택할 때는 select_one 주의
url = 'https://www.youtube.com/' + content.select_one('a#video-title').attrs['href']
view = content.select_one('div#metadata-line > span:nth-child(3)').text
createdAt = content.select_one('div#metadata-line > span:nth-child(4)').text
크롤링 결과 ↓