본문 바로가기
데이터엔지니어링/데이터수집

브라우저 자동화하는 셀리니움selenium 설치 및 with-as를 활용한 예문보기

by goemgoem-i 2024. 10. 13.
반응형
브라우저 자동화 selenium

 

 

 

1.  WebDriver는 웹 브라우저를 제어할 수 있는 자동화 프레임워크

%pip install webdriver-manager

 

 

 

2. Selenium 으로 부터 webdriver 불러오기

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

 

 

 

 

 

3. 웹드라이버 경로 설정 (ChromeDriver의 경로를 지정하세요)

driver_path = r'C:\path\to\chromedriver.exe'  # 드라이버의 경로를 지정합니다.
driver = webdriver.Chrome(executable_path=driver_path)

 

 

 

 

 

4. 웹사이트 열기 

driver.get("https://www.google.com")
print(driver.page_source) #page_source 확인

 

 

 

 

 

5. with - as를 활용한 웹사이트 열기 

# with-as 구문 사용
with WebDriverContext(driver_path) as driver:
    # 웹사이트 열기
    driver.get("https://www.google.com")
    print(driver.page_source)

 

1) with -as  개념 : 주로 파일, 데이터베이스 연결, 네트워크 연결과 같은 리소스를 안전하게 열고 닫는 데 유용

with expression as variable:
    # 블록 내에서 수행할 작업
    pass  # 명령어를 여기에 작성

 

 

2) 예문 :

example.txt 파일의 내용을 읽고 출력한 후, 블록을 벗어나면 파일이 자동으로 닫힘

# 파일 열기 및 내용 읽기
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)  # 파일 내용 출력

# 블록이 끝나면 파일이 자동으로 닫힙니다.

 

 

 

 

6. driver에서 특정 요소 추출

 

1 ) 요소 하나 찾기 : find_elemnet(by, target) 

search_box = driver.find_element(By.NAME, "q")  # 검색창을 찾기

 

 

2)  요소 여러개 찾기 : find _element(by, target)

search_results = driver.find_elements(By.TAG_NAME, "h3")  # 검색 결과 제목을 모두 찾기

 

** by - 요소를 찾기 위한 기준

** target - by에서 지정한 기준에 해당하는 요소의 속성 값 입력 

 

 

3) 활용 예문 

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

###<요소를 하나만 찾을 경우>
# with-as 구문을 사용하여 드라이버를 초기화
with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:
    driver.get("https://www.google.com")  # 웹사이트 열기

    # p 태그를 가진 첫 번째 요소 찾기
    element = driver.find_element(By. id "a")
    
    # 요소의 텍스트 출력
    print(element.text)  # a태그의 텍스트를 출력




###<요소를 여러개 찾을 경우>
# with-as 구문을 사용하여 드라이버를 초기화
with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:
    driver.get("https://www.google.com")  # 웹사이트 열기

    # p 태그를 가진 모든 요소 찾기
    elements = driver.find_elements(By.id, "a")
    
    # 각 요소의 텍스트 출력
    for element in elements:
        print(element.text)  # a 태그의 텍스트를 출력

 

 

 

 

7. 페이지가 완전히 열릴 때까지 대기 / 동적 웹사이트의 문제점 해결책

time.sleep(2)

 

 

8. 검색어 실행 및 입력

# 검색어 입력
search_box.send_keys("Hello World!")

# 검색 실행
search_box.submit()

 

 

9. 브라우저 종료 

# 브라우저 종료
driver.quit()

 

 

 

 

반응형