Selenium 사용법 (미완)

귀찮Lee·2022년 3월 4일
0
post-custom-banner

크롬 버전 99.0.4844.51 기준으로 작업하였습니다.

@ 설치방법

  1. terminal 에서 아래 코드 입력 // 파이썬 환경 기준
pip install selenium
  1. 브라우저별로 selenium webdriver를 다운로드 // 크롬 브라우저 이용 기준
    자신의 크롬브라우저에서 '설정>Chrome 정보' 에 가서 최신 업데이트 하고 해당 버전으로 설치할 것
    https://sites.google.com/a/chromium.org/chromedriver/downloads

  2. 다운로드 받은 chrome.exe를 작업할 python 파일과 같은 폴더에 넣을 것
    그렇지 않다면 아래 코드에서 디렉토리를 설정해주어야 함.

@ 사용예제
python에서 서술 / 전시회 정보를 크롤링하는 예제

# selenium import 부분
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 같은 폴더에서 크롬드라이버 불러오기
driver = webdriver.Chrome('chromedriver')
# 네이버 전시회 검색결과 띄우기
driver.get(url='https://search.naver.com/search.naver?where=nexearch&sm=tab_etc&mra=bjBC&qvt=0&query=%EC%A0%84%EC%8B%9C%ED%9A%8C')
# 해당 페이지가 전부 로드될 때 까지 대기
time.sleep(1)

# page가 87번까지 있으므오 86번 반복실행
for i in range(1,87):
    # 크롤링 할 박스 선택
    divs = driver.find_elements(by=By.CSS_SELECTOR, value='#mflick > div > div > div > div > div')
    for div in divs:
        # a_title : 전시회 제목 / a_time : 전시회 기간 / a_place_name : 장소 / a_place_url : 장소 관련 사이트 / a_image : 전시회 이미지 링크
        # find_elements 는 해당하는 태그를 리스트 형식으로 불러오므로 0번째를 골라서 추출함 / 한개만 불러올 때는 find_element를 사용하는  것을 추천
        # 괄호 안 by 값을 CSS_SELECTOR 대신에 다른 것으로 변경하면 id 태그 이름 등으로 찾을 수 있다. 자세한 사항은 참고 링크 참조 / 해당 링크에는 전 버전으로 서술되어 있어 함수는 아래와 같은 형식으로 사용할 것.
        a_title = div.find_elements(by=By.CSS_SELECTOR, value='div.data_area > div > div.title > div > strong > a')[0].text
        a_time = div.find_elements(by=By.CSS_SELECTOR, value='div.data_area > div > div.info > dl:nth-child(1) > dd')[0].text
        a_place_name = div.find_elements(by=By.CSS_SELECTOR, value='div.data_area > div > div.info > dl:nth-child(2) > dd > a')[0].text
        a_place_url = div.find_elements(by=By.CSS_SELECTOR, value='div.data_area > div > div.info > dl:nth-child(2) > dd > a')[0].get_attribute("href")
        a_image =div.find_elements(by=By.CSS_SELECTOR, value='div.data_area > a > img')[0].get_attribute("src")
        print(a_title, a_time, a_place_name, a_place_url, a_image)

    # 클릭 할 버튼 생성
    NextPageBtn = driver.find_elements(by=By.CSS_SELECTOR, value='#main_pack > div.sc_new.cs_common_module.case_list.color_1._kgs_art_exhibition > div.cm_content_wrap > div > div > div.cm_paging_area._page > div > a.pg_next.on')
    # 해당 버튼 클릭
    NextPageBtn[0].click()
    # 클릭 이후에 박스가 로딩될 때까지 대기
    time.sleep(0.2)

Selenium 업데이트로 인해 아래 사이트와 사용하는 함수 형태가 다름
함수 형태는 위의 코드를 참고

이해하기 쉬운 예제
설명1(설치방법포함)
설명2

profile
배운 것은 기록하자! / 오류 지적은 언제나 환영!
post-custom-banner

0개의 댓글