Beautiful Soap는 웹사이트에서 버튼을 클릭해야 얻을 수 있는 데이터라던가, Javascript 에 조건이 충족되어야만 얻을 수 있는 데이터에 접근하는 것에 한계가 있다.
그래서, 직접적으로 웹 사이트에 접근할 수 있게 해주는 Selenium을 사용해야 한다. 웹 브라우저를 대신해 줄 Driver가 필요하다.
Updated : 2025.04.06

현재 설치된 크롬 브라우저 정보를 확인하는 방법이다.
구동할 드라이버를 현재 사용중인 크롬 브라우저와 동일한 버전으로 받아서 설치해야 동작이 제대로 된다.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import os # Chrome WebDriver 경로 설정 (현재 폴더의 이전 폴더) BASE_DIR = os.path.abspath(os.path.join(os.getcwd(), "./driver"))  # 현재 폴더의 아래 driver 폴더 CHROME_DRIVER_PATH = os.path.join(BASE_DIR, "chromedriver.exe")  # Chrome WebDriver의 경로 # WebDriver 경로 확인 if not os.path.exists(CHROME_DRIVER_PATH):     raise FileNotFoundError(f"ChromeDriver 파일이 '{CHROME_DRIVER_PATH}'에 존재하지 않습니다. 경로를 확인하세요.") options=Options() options.add_experimental_option("detach", True) # 브라우저 창 떳다기 사라지기(False), 계속 유지(True) # options.add_argument('headless'); # headless는 화면이나 페이지 이동을 표시하지 않고 동작하는 모드 # webdirver 설정(Chrome) # driver = webdriver.Chrome() # 브라우저 창 보이기 service = Service(CHROME_DRIVER_PATH) driver = webdriver.Chrome(service=service, options=options) # 크롬 브라우저 내부 대기 (암묵적 대기) driver.implicitly_wait(5) # 브라우저 사이즈 driver.set_window_size(1920,1280) # 페이지 이동(열고 싶은 URL) driver.get('https://www.naver.com') # 세션 값 출력 print('Session ID : {}'.format(driver.session_id)) # 타이틀 출력 print('Title : {}'.format(driver.title)) # 현재 URL 출력 print('URL : {}'.format(driver.current_url)) # 현재 쿠기 정보 출력 print('Cookies : {}'.format(driver.get_cookies())) # 검색창 input 선택 element = driver.find_element(By.CSS_SELECTOR, '#query') # 네이버 검색 # 검색어 입력 element.send_keys('스프링부트') # 엔터키 입력 element.send_keys(Keys.ENTER) # 브라우저 종료 # driver.quit() | 
위 코드의 원본 소스
olde 버전은 현재 크롬브라우저와 정보가 일치하지 않기 때문에 문제가 되더라.
selenium 설치
pip install selenium
pip install chromedriver-autoinstaller
| # pip install selenium # pip install chromedriver-autoinstaller  from selenium import webdriver import chromedriver_autoinstaller # 파이썬으로 셀레니움을 사용하기 위해 필요한 모듈을 import한다. from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.select import Select from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.alert import Alert from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException options = Options() options.add_argument('disable-gpu'); options.add_argument('disable-extensions'); options.add_argument('proxy-server="direct://"'); options.add_argument('proxy-bypass-list=*'); options.add_argument('start-maximized'); # options.add_argument('headless'); # headless는 화면이나 페이지 이동을 표시하지 않고 동작하는 모드 # webdirver 설정(Chrome, Firefox 등) # autoinstaller를 설정한 경우 chromedriver_autoinstaller.install() driver = webdriver.Chrome() # 직접 PC에 설치한 드라이버 경로를 설정한 경우 # driver = webdriver.Chrome('./webdriver/chrome/chromedriver.exe') # 크롬 브라우저 내부 대기 (암묵적 대기) driver.implicitly_wait(5) # 속성 확인 print(dir(driver)) # 브라우저 사이즈 driver.set_window_size(1920,1280) # 페이지 이동(열고 싶은 URL) # driver.get('https://www.daum.net') driver.get('https://www.naver.com') # 페이지 내용 print('Page Contents : {}'.format(driver.page_source)) print() # 세션 값 출력 print('Session ID : {}'.format(driver.session_id)) # 타이틀 출력 print('Title : {}'.format(driver.title)) # 현재 URL 출력 print('URL : {}'.format(driver.current_url)) # 현재 쿠기 정보 출력 print('Cookies : {}'.format(driver.get_cookies())) # 검색창 input 선택 # element = driver.find_element_by_css_selector('div.inner_search > input.tf_keyword') # 다음 검색 element = driver.find_element_by_css_selector('div.green_window > input#query') # 네이버 검색 # 검색어 입력 element.send_keys('마마무') # 검색(Form Submit) element.submit() # 스크린 샷 저장 1 savePath = "c:/Users/zx/Documents/Python/" driver.save_screenshot(savePath + 'website_ch1.png') # 스크린 샷 저장 2 driver.get_screenshot_as_file(savePath+ 'website_ch2.png') # 브라우저 종료 driver.quit() | 
검색창 input 태그를 찾는 방법이다. --> Firefox 브라우저에서 실행


크롬브라우저에서의 선택 화면

728x90
    
    
  'Web 크롤링 > Python Crawling' 카테고리의 다른 글
| 파이썬 selenium 으로 다나와 제품 검색 페이지 전환 크롤링 (0) | 2021.06.26 | 
|---|---|
| 파이썬 selenium 으로 다나와 제품 리스트 크롤링 (4) | 2021.06.26 | 
| [크롤링기초] 다나와 로그인 스크래핑 예제 (2) | 2021.06.25 | 
| [크롤링기초] 네이버 쇼핑 정보 가져오기 (0) | 2021.06.25 | 
| [크롤링기초] 네이버 주식 현재가 가져오기 (0) | 2021.06.25 | 
