본문 바로가기
Python/Python_Crawling

셀레니움 : 다음이미지 마우스호버 및 사진별 캡쳐

by Mr.DonyStark 2024. 1. 19.

□ 주 사용 라이브러리

  ○ 셀레니움

  ○ 셀레니움 > 웹드라이버 > 키

  ○ 셀레니움 > 웹드라이버 구동

  ○ 셀레니움 > 웹드라이버 > 옵션 라이브러리

  ○ 셀레니움 > 웹드라이버 > 마우스커서

  ○ 타임지정

from selenium import webdriver
from selenium.webdriver.chrome.options import Options  #크롬 자동방지 등 옵션 활용 라이브러리
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains #마우스 커서관련 라이브러리
from selenium.webdriver.common.keys import Keys   #값입력시 활용 라이브러리
import time    #실행 후 대기시간 라이브러리

 

□ 주 사용 함수

  ○ 드라이버 구동 : .webdriver.Chrome( )
  ○ 생성창 최대크기 : .maximize_window()
  ○ 생성창 크기지정 : .set_window_size(가로,높이)
  ○ 생성창 위치좌표 : .set_window_position(행위치, 열위치)
  ○ 타겟 주소 지정함수 : .get('주소')
  ○ id value를 활용한 값 입력 : .find_element(by='id', value='값').send_keys(입력값)
  ○ id value를 활용한 클릭 : .find_element(by='id', value='값').click()

  ○ x-path를 활용한 클릭 : .find_element(By.XPATH, value = 'xpath 값').send_keys(입력값)

  ○ x-path를 활용한 텍스트 입력 : .find_element(By.XPATH, value = 'xpath 값').click() 

  ○ Alret(경고창) 확인관련 변수 : 변수명 = Alert(드라이버)

  ○ Alret(경고창) 확인 : Alert(드라이버) 변수명.accept()

  ○ 창 닫기 : 드라이버.quit()

  ○ 스크린샷 후 파일 저장 : .get_screenshot_as_file("저장경로")

  ○ 사진별 캡쳐 후 저장 :  .find_element(태그값).screenshot("저장경로")

  ○ 스크롤 다운 : .execute_script("window.scrollTo(0,다운할 크기)")

  ○ 마우스 호버 : core_move.move_to_element( 태그값 ).perform()

  ○ 반복문 : for문

마우스 호버

※영상에는 잘 보이지 않지만 이미지별 호버시 약간 흐려지는 부분이 있는데 그 효과가 호버가 된 것을 의미

※위에 영상과 같이 사진별 마우스 호버 코드에 아래 영상과 같은 사진별 캡쳐 코드 작성

마우스 호버+사진별캡쳐
#필요라이브러리 추출
from selenium import webdriver
from selenium.webdriver.chrome.options import Options  #크롬 자동방지 등 옵션 활용 라이브러리
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains #마우스 커서관련 라이브러리
from selenium.webdriver.common.keys import Keys   #값입력시 활용 라이브러리
import time    #실행 후 대기시간 라이브러리

# 브라우저 자동 꺼짐옵션지정
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

# 검색어 지정
search_word = input('■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n검색하고자 하시는 키워드를 입력해주세요■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n:\t')

# 드라이버 구동 : 드라이버 저장 경로를 활용하여 드라이버 변수 지정
core_driver = webdriver.Chrome(options=chrome_options) #예전 셀리니움 버젼에는 경로를 직접지정했으나, 업데이트 되어 경로입력을 안해도됨
# 마우스 드라이버 구동
core_move = ActionChains(core_driver)

# 웹창 사이즈
core_driver.set_window_size(800,1200)  #생성창 크기 커스터마이징 : set_window_size(가로길이, 높이길이)
core_driver.set_window_position(1000, 0)  #행위치, 열위치)

# 접속 페이지 지정
core_driver.get('https://search.daum.net/search?nil_suggest=btn&w=img&DA=SBC&q='+search_word)
print('■■■■■■■■■■■■■■■■■ 입력키워드 관련 접속완료')

# 액션 : 스크롤 
for s in range(1,21):  #범위지정
    a = 0
    a += s
    # 액션 : 마우스 호버
    # 마우스 포인트를 사진위에 올림 
    core_move.move_to_element(
        core_driver.find_element(By.XPATH, value = '//*[@id="imageColl"]/div[4]/div/div[1]/div[' + str(a) + ']/div[1]/a/img')
        ).perform()
    # 사진별 스크린샷 및 저장
    core_driver.find_element(By.XPATH, value = '//*[@id="imageColl"]/div[4]/div/div[1]/div[' + str(a) + ']/div[1]/a/img').screenshot("C:/python/screent_shot/test" + search_word + str(a) + ".png")
    time.sleep(4)
    print(f'■■■■■■■■■■■■■■■■■ {a} 위치이동 및 사진다운 완료')
    time.sleep(2)

print(f'■■■■■■■■■■■■■■■■■ {a} 까지 호버이동/사진다운 완료')
time.sleep(2)

core_driver.quit()
print(f'■■■■■■■■■■■■■■■■■ 셀리니움 종료')