□ 주 사용 라이브러리
○ 셀레니움
○ 셀레니움 > 웹드라이버 > 키
○ 셀레니움 > 웹드라이버 구동
○ 셀레니움 > 웹드라이버 > 옵션 라이브러리
○ 타임지정
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
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("저장경로")
○ 스크롤 다운 : .execute_script("window.scrollTo(0,다운할 크기)")
○ 반복문 : for문
#필요라이브러리 추출
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import time
# 옵션지정
chrome_options = Options()
chrome_options.add_experimental_option('detach', True)
# 브라우저 자동 꺼짐옵션지정
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
#드라이버 실행
core_driver = webdriver.Chrome(options=chrome_options)
#웹창 최대사이즈
core_driver.set_window_size(800,1200) #생성창 크기 커스터마이징 : set_window_size(가로길이, 높이길이)
core_driver.set_window_position(1000, 0) #행위치, 열위치)
#대상 웹 페이지
core_driver.get('https://www.google.com/')
# 액션 : 키워드 입력
search_key_word = input('\n■■■■■■■■■■■■■■■■■■■\n검색하시고자하는 단어를 입력해주세요\t:\t')
core_driver.find_element(By.XPATH, value = '//*[@id="APjFqb"]').send_keys(search_key_word)
print('■■■■■■■■■■■■■■■■■키워드 입력완료')
time.sleep(2)
# 액션 : 키워드 입력 후 엔터 Keys.RETURN
core_driver.find_element(By.XPATH, value = '//*[@id="APjFqb"]').send_keys(Keys.RETURN)
print('■■■■■■■■■■■■■■■■■검색진행 완료')
# 액션 : 버튼클릭
core_driver.find_element(By.XPATH, value = '//*[@id="bqHHPb"]/div/div/div[1]/a[1]/div/span').click()
print('■■■■■■■■■■■■■■■■■뉴스 탭 클릭 완료')
time.sleep(2)
# 액션 : 스크롤 다운
core_driver.execute_script("window.scrollTo(0,1500)")
print('스크롤 완료')
time.sleep(2)
# 액션 : 펼침버튼클릭
core_driver.find_element(By.XPATH, value = '//*[@id="rso"]/div/div/g-section-with-header[3]/div[3]/g-more-link/a/div/span[2]').click()
print('■■■■■■■■■■■■■■■■■펼치기 버튼 클릭 완료')
time.sleep(2)
# 액션 : 상세보기 클릭
core_driver.find_element(By.CLASS_NAME, value = 'iRPxbe').click()
print('■■■■■■■■■■■■■■■■■기사 상세보기 버튼 클릭 완료')
time.sleep(4)
# 창 최대사이즈
core_driver.maximize_window()
print('■■■■■■■■■■■■■■■■■창최대화 완료')
time.sleep(4)
time.sleep(2)
# 액션 : 스크롤 다운 및 스크린샷
a=0
for c in range(0,4):
scroll_index = c * 1500
a+=1
core_driver.get_screenshot_as_file("C:/python/screent_shot/test" + str(a) + ".png") #문자열 치환을 위해 str() 형변환하여 진행
print(f'{a}\t번째 스크린샷 완료')
time.sleep(2)
core_driver.execute_script("window.scrollTo(0," + str(scroll_index) + ")") #문자열 치환을 위해 str() 형변환하여 진행
print(f'{scroll_index}\t만큼 스크롤 완료')
time.sleep(2)
print('스크롤 및 스크린샷 다운완료')
core_driver.quit()
print('■■■■종료')
'Python > Python_Crawling' 카테고리의 다른 글
셀레니움 : 다음이미지 마우스호버 및 사진별 캡쳐 (0) | 2024.01.19 |
---|---|
셀레니움 : 파일업로드 (0) | 2024.01.19 |
셀레니움 : 네이트 메뉴버튼클릭 및 댓글작성, 알럴트(경고)창 통제 (0) | 2024.01.18 |
셀레니움 : 네이버 로그인 및 메뉴접속 (0) | 2024.01.18 |
openpyxl을 활용한 데이터 크롤링 및 엑셀저장 (0) | 2023.12.27 |