프로젝트3 : 웹데이터 분석 3일차(~10)

박영선·2023년 5월 14일
0

selenum 설치

BeautifulSoup 만으로 해결할 수 없는것

  • 접근할 웹 주소 알 수 없을 때
  • 자바스크립트 사용하는 웹페이지
  • 웹브라우저로 접근하지 않으면 안될 때

Selenium

  • 웹브라우저 원격조작 도구

  • 자동으로 URL 열고 클릭등이 가능

  • 스크롤, 문자의 입력, 화면 캡쳐 등

    설치

주피터노트북으로 설치 확인

크롬 버젼 확인하고 드라이버 다운받기(버젼 앞부분 숫자에 맞는것 중 선택)

실행 시 새로운 크롬브라우저 뜨면 성공

*driver.quit()으로 크롬브라우저 닫기 가능

selenium 안내사항

  • 문법 변경점
  • find_element_by_css_selector('tag')
  • find_element(By.CSS_SELECTOR('tag')) 로 변경(import bt 필요)

selenium 기초

화면크기 조정 (한화면에 많은 정보가 담기는게 데이터 가져오는데 유리)

driver.maximize_window()
driver.minimize_window()
driver.set_window_size(600,600)

새로고침,뒤,앞으로 가기

driver.refresh()
driver.back()
driver.forward()

클릭

from selenium.webdriver.common.by import By

first_content = driver.find_element(By.CSS_SELECTOR,'#content > div.cover-masonry > div > ul > li:nth-child(1)')
first_content.click()
  • 실행하고나면 해당 게시글 클릭해서 상세페이지 들어간거 확인 가능

새로운 탭 생성 및 이동

driver.execute_script('window.open("https://www.naver.com")')
driver.switch_to.window(driver.window_handles[0])

탭 닫기 (탭이동으로 정해진 탭을 닫는다)

driver.close()

*quit은 전체종료, close는 탭 종료

스크롤 하기

driver.execute_script('return document.body.scrollHeight')
  • 여기서 나오는 값은 document의 body 부분의 스크롤 할 수 있는 높이

스크롤 최하단, 최상단 이동

driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
driver.execute_script("window.scrollTo(0,0);")

현재보이는 화면 스크린샷 저장

driver.save_screenshot('./last_height.png')
  • 여기서 . 은 현재위치 라는 뜻

특정 태그지점까지 스크롤 이동

from selenium.webdriver import ActionChains

some_tag = driver.find_element
(By.CSS_SELECTOR,'#content > div.cover-list > div > ul > li:nth-child(1)')
action = ActionChains(driver)
action.move_to_element(some_tag).perform()

*actionchains 잘 활용하기

검색어 입력하기

네이버 열기

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome('../driver/chromedriver/chromedriver.exe')
driver.get('https://www.naver.com')

검색어 입력창 찾기

keyword = driver.find_element(By.CSS_SELECTOR,'#query')
keyword.clear() # 기존 검색어 지우는 명령어
keyword.send_keys('파이썬')

이렇게 입력하고나면 검색창에 파이썬 이라는 글자가 들어가있음

검색버튼 누르기

search_btn = driver.find_element(By.CSS_SELECTOR,'#search_btn')
search_btn.click()

CSS_SELECTOR 대신 XPATH 활용하기 (셀레니움에서만 가능)

driver.find_element(By.XPATH,'//*[@id="query"]').send_keys('xpath')
driver.find_element(By.XPATH, '//*[@id="search_btn"]').click()

// : 최상위 루트를 의미

  • : 자손태그 의미
    / : 자식태그를 의미

Pinkwink 검색어 입력하기

  1. 돋보기 버튼 클릭 (값이 변경되는걸 볼 수 있음)

돋보기 버튼 클릭을 위한 코드

from selenium.webdriver import ActionChains

search_tag = driver.find_element(By.CSS_SELECTOR, '.search')
action = ActionChains(driver)
action.click(search_tag)
action.perform()
  1. 검색어 입력
driver.find_element(By.CSS_SELECTOR,'#header > div.search > input[type=text]').send_keys('딥러닝')
  1. 검색버튼 클릭
driver.find_element(By.CSS_SELECTOR,'#header > div.search.on > button').click()

selenium + beautifulsoup

profile
데이터분석 공부 시작했습니다

0개의 댓글