파이썬 셀레니움 드롭다운 박스 선택하기
파이썬 셀레니움을 통한 크롤링을 할 때 드롭다운 박스를 선택하는 방법에 대해 설명드리겠습니다.
크롤링을 하다보면 단순히 키워드로만 검색하는 것이 아니라 다양한 옵션을 선택 후에 검색할 때가 있죠.
이때 드롭다운 박스(select tag)를 선택해야하는 경우에 셀레니움으로 어떻게 처리해야하는 지 직접 코드로 보여드리겠습니다.
셀레니움 드롭다운 select tag xpath로 크롤링하기
셀레니움의 가장 큰 장점이 xpath로 원하는 요소에 쉽게 접근하여 제어할 수 있다는 점이죠.
드롭다운 박스 역시 xpath로 접근하여 제어할 수 있습니다.
하지만 드롭다운(select tag)는 추가적으로 select 모듈을 사용하여 제어 가능합니다.
from selenium.webdriver.support.ui import Select
위의 select 모듈을 추가하면 Select() 함수를 사용할 수 있습니다.
Select()함수를 사용하기 이전에 크롤링할 페이지를 살펴보겠습니다.
잡코리아 검색 페이지 크롤링
위의 사진은 잡코리아 채용공고 상세검색 페이지입니다.
검색할 수 있는 옵션을 보면 다양하게 있고, select tag로 만들어진 드롭다운 박스도 보이실 거에요.
위의 사진에서 선택된 영역은 "추천순" / "최신업데이트순" / "마감일순" / "경력순" / "학력순" / "등록일순" 이 있습니다.
실제로 해당 드롭박스 select tag의 코드를 살펴보면 아래의 사진과 같습니다.
해당 드롭다운 박스는 "공고 정렬"을 위한 select tag 인걸 알 수 있습니다.
select tag 의 옵션(option)들을 살펴보면 어떤 옵션이 있고, 각 옵션이 어떤 value를 가지는지 알 수 있습니다.
이 정보를 바탕으로 select 모듈의 Select() 함수를 사용하면 됩니다.
셀레니움 드롭다운(select tag) Select() 함수로 선택하기
우선 전체 코드를 보여드리겠습니다.
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.support.ui import Select
def main():
driver = webdriver.Chrome('c:\\chromedriver.exe')
driver.implicitly_wait(3)
url = 'https://www.jobkorea.co.kr/recruit/joblist?menucode=local&localorder=1'
driver.get(url)
driver.implicitly_wait(3)
dropdown = Select(driver.find_element_by_xpath('//*[@id="orderTab"]')) #정렬기준 드롭다운
#case1 - 인덱스 기준으로 찾기
dropdown.select_by_index(3)
#case2 - 실제 텍스트 기준으로 찾기
#dropdown.selec_by_visible_text("경력순")
#case3 - <option value> 값으로 찾기
#dropdown.select_by_value("5")
driver.implicitly_wait(3)
driver.find_element_by_xpath('//*[@id="lb_exceptWord"]').send_keys('인공지능') #검색어 입력
driver.implicitly_wait(3)
driver.find_element_by_xpath('//*[@id="dev-gi-search"]').click() #검색 버튼 클릭
driver.implicitly_wait(3)
#창 유지를 위한 무한 반복문
while True :
pass
if __name__ == "__main__":
main()
위의 코드 중 "정렬 기준"을 정하는 드롭다운 박스를 xpath로 접근하여 select()함수로 선택합니다. (아래 코드 참조)
dropdown = Select(driver.find_element_by_xpath('//*[@id="orderTab"]')) #정렬기준 드롭다운
이렇게 Select()함수로 select tag에 접근하여 반환된 값을 "dropdown" 변수에 입력합니다.
그 뒤, "dropdown" 변수 하위에서 호출할 수 있는 세 가지 함수로 select tag의 옵션(option)을 지정할 수 있습니다.
첫번째는 인덱스를 기준으로 찾는 "select_by_index()" 함수,
두번째는 옵션의 텍스트 값으로 찾는 "selec_by_visible_text()" 함수,
세번째는 옵션 태그에 지정된 value로 찾는 "select_by_value()" 함수 입니다.
위의 전체 코드를 보시면 case1, case2, case3로 구분하여 작성되어 있는 부분입니다.
각각의 함수는 아래 처럼 작성되어 있고, 세 함수 모두 같은 옵션 값을 선택하게 됩니다. ("경력순"을 선택)
#case1 - 인덱스 기준으로 찾기
dropdown.select_by_index(3)
#case2 - 실제 텍스트 기준으로 찾기
dropdown.selec_by_visible_text("경력순")
#case3 - <option value> 값으로 찾기
dropdown.select_by_value("5")
전체 코드에서는 옵션을 선택한 이후에 검색어 입력창에 "인공지능"을 입력하고, 검색 버튼을 누르는 기능까지 작성되어 있습니다.
전체 코드를 그대로 따라서 사용해보시고, 세부적은 xpath 값이나 옵션 선택값은 각자 타겟으로 하는 페이지에 맞게 수정하시면 될 거에요.
그럼 다음에도 여러분들께 도움되는 파이썬 셀레니움 크롤링 코드를 가지고 찾아뵙겠습니다.
감사합니다.
함께 읽으면 좋은 글
파이썬 크롤링 셀레니움 오류 ModuleNotFoundError: No module named 'selenium' 해결방법
파이썬 크롤링 쿠팡 로그인 차단 접속 거부(Access Denied) 문제 해결 방법
셀리니움 Selenium 크롬 실행 오류(selenium.common.exceptions.SessionNotCreatedException)
https 차단 우회 PC버전/ https 차단 해제 프로그램 추천 'GoodbyeDPI'
아이큐 테스트 - 짧고 정확한 온라인 국제 IQ 테스트(feat. 웩슬러기반)
2022 넷플릭스 영화 추천 TOP7 - 현 시점 지구에서 가장 재밌는 영화 7편
넷플릭스 한국 영화 추천 TOP17 - 꿀잼 보장하는 2022~20년 사이에 개봉한 작품들
넷플릭스 애니 추천 2022 - 꼭 봐야 하는 명작 베스트 4
'알아보자 > 프로그래밍' 카테고리의 다른 글
파이썬 크롤링 셀레니움 오류 ModuleNotFoundError: No module named 'selenium' 해결방법 (0) | 2022.05.03 |
---|---|
파이썬 크롤링 쿠팡 로그인 차단 접속 거부(Access Denied) 문제 해결 방법 (14) | 2022.04.29 |
셀리니움 Selenium 크롬 실행 오류(selenium.common.exceptions.SessionNotCreatedException) (1) | 2022.04.21 |
C 언어 알파벳 대문자와 소문자 구분하기 / 대소문자 바꾸기 (0) | 2022.04.14 |
최근댓글