반응형
브라우저 자동화 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()
반응형
'데이터엔지니어링 > 데이터수집' 카테고리의 다른 글
youtube api 분석 및 프로젝트생성과 사용자 인증정보 생성 (0) | 2024.12.19 |
---|---|
페이지네이션의 오류로 인해서 알아보는 network 사용법 (2) | 2024.11.04 |
웹크롤링과 웹스크래핑 차이점 및 특정데이터 추출하기 (2) | 2024.11.01 |
동적웹사이트와 정적웹사이트 차이점 및 time.sleep()의 활용 (2) | 2024.10.13 |
html 정의 및 기본 문법 정리 (2) | 2024.10.13 |