셀레니움을 이용해서 영화 정보 보기

최대환·2022년 8월 13일
0

어제에 bs4에 한계를 느끼고 오늘은 셀레니움을 사용법을 알아보려고한다.

셀레니움이란?

셀레니움은 브라우저를 직접 조종해 페이지를 동적으로 크롤링하는 라이브러리이다.
이를 이용하여 왓챠피디아에서 내가 원하는 영화의 정보를 검색할거다.
아래와 같이 왓챠피디아는 스크래핑을 허용해놨다.

네이버 들어가기

import time
from bs4 import BeautifulSoup  # 있다가 출력할꺼기 때문에 bs4도 받았음
from selenium import webdriver  # 셀레니움 라이브러리

# 크롬 드라이버로 네이버 열기
URL = 'https://naver.com'
driver = webdriver.Chrome(executable_path='/Users/daehwan/Desktop/chromedriver')
driver.get(url=URL)
driver.implicitly_wait(100)  # 로딩될때까지 대기

우선 네이버를 들어가보자.
아 그리고 셀레니움 라이브러리를 임포트 하기전에 크롬 드라이버를 설치해주자.(현재사용하고 있는 크롬이랑 버전이 맞아야한다)

네이버에서 왓챠피디아 입력해 들어가기

## 네이버에서 왓챠피디아 입력해서 들어가기
search = driver.find_element_by_css_selector('#query')  # 네이버 검색 창 아이디
search_content = "왓챠피디아"
search.send_keys(search_content)   
driver.find_element_by_css_selector('#search_btn').click() # 검색 버튼 클릭
driver.implicitly_wait(100) # 로딩 될떄까지 대기
driver.find_element_by_css_selector('.total_tit_group').click()  # 첫번쨰 웹사이트 클릭
driver.implicitly_wait(100)

탭전환하고 탑건 검색하기

# 탭전환
driver.switch_to.window(driver.window_handles[-1])

# 스파이더맨 검색하기
search = driver.find_element_by_css_selector('.css-kyr608')  # css암호화, 검색버튼이다.
search.send_keys("스파이더맨")
search.submit()
time.sleep(2)

여기서 그냥 들어간 사이트의 css를 클릭하려고하면 에러가 뜬다.
사이트에 들어가면 탭을 반드시 전환해줘야한다.
이번에는 click()으로 버튼을 안누르고 submit()명령어를 사용해서 제출해봤다.
내가 알기론 submit은 from형태로 되어있는곳에만 쓸 수 있고 로딩 시간을 기다려주는걸로 안다. (혹시나 틀리면 댓글 부탁합니다😀)

왓챠피디아에서 내용 출력하기

# 첫번째꺼 클릭하기
driver.find_element_by_class_name('css-8y23cj').click()
driver.implicitly_wait(100)

# 더보기 클링하기
driver.find_element_by_class_name('css-1ugqy9j').click()
driver.implicitly_wait(100)

# html 문서 파싱하기
html = driver.page_source
soup = BeautifulSoup(html,"html.parser")
print(soup.select_one("dl.css-1gkwvxt-DescriptionList.e1kvv3951 > dd").text)

여러 영화정보 중 첫번째 것에 들어가서

더보기 란에 들어간다.

그리고 상세정보에서 내용을 출력한다.

터미널에 잘 출력되는걸 볼 수 있다.

전체코드

import time
from bs4 import BeautifulSoup
from selenium import webdriver

# 크롬 드라이버로 네이버 열기
URL = 'https://naver.com'
driver = webdriver.Chrome(executable_path='/Users/daehwan/Desktop/chromedriver')
driver.get(url=URL)
driver.implicitly_wait(100)

## 네이버에서 왓챠피디아 입력해서 들어가기
search = driver.find_element_by_css_selector('#query')
search_content = "왓챠피디아"
search.send_keys(search_content)
driver.find_element_by_css_selector('#search_btn').click()
driver.implicitly_wait(100)
driver.find_element_by_css_selector('.total_tit_group').click()
driver.implicitly_wait(100)

# 탭전환
driver.switch_to.window(driver.window_handles[-1])

# 탑건 검색하기
search = driver.find_element_by_css_selector('.css-kyr608')
search.send_keys("스파이더맨")
search.submit()
time.sleep(2)

# 첫번째꺼 클릭하기
driver.find_element_by_class_name('css-8y23cj').click()
driver.implicitly_wait(100)

# 더보기 클링하기
driver.find_element_by_class_name('css-1ugqy9j').click()
driver.implicitly_wait(100)

# html 문서 파싱하기
html = driver.page_source
soup = BeautifulSoup(html,"html.parser")
print(soup.select_one("dl.css-1gkwvxt-DescriptionList.e1kvv3951 > dd").text)

time.sleep(10)
driver.quit()  # 실행종료
profile
나의 개발지식 output 공간

0개의 댓글