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()
 

 

위 코드의 원본 소스

crawling_16.py
0.00MB

 

 

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
블로그 이미지

Link2Me

,