[일단!] - 일단 실행해보세요! 멋진일이 일어날걸요?
[알고!] - 코드 로직과 필요한 개념들을 같이 정리해봐요!
이 글에서는?
- 셀레니움이란?
- requirements.txt
- 셀레니움 코드리뷰 - (상)
- 1. 라이브러리 임포트
- 2. 드라이버 설정
셀레니움(Selenium)은 웹 애플리케이션의 테스트 자동화를 위해 널리 사용되는 오픈 소스 도구입니다. 즉, 셀레니움은 수동으로 진행되는 테스트를 자동화하여 웹 애플리케이션의 품질 보증, 개발 및 유지보수를 효율적으로 지원합니다. 여기서는 셀레니움의 WebDriver 기능을 활용하여 동적 웹사이트를 크롤링하려고 합니다.
파이썬에서 크롤링을 할 때는 일반적으로 BeautifulSoup을 함께 사용합니다. 그러나 BeautifulSoup은 HTML 문서를 파싱하는 라이브러리로, 주로 정적 웹페이지의 내용을 처리하는 데 적합합니다. 반면, 최근에는 봇의 크롤링을 방지하기 위해 웹 페이지가 동적으로 구성되는 경우가 많아, 단순 HTML 파싱만으로는 원하는 데이터를 추출하기 어려운 상황이 발생합니다. 이러한 경우 동적으로 자바스크립트가 실행되어 렌더링되는 페이지의 데이터를 가져오기 위해 셀레니움이 효과적으로 활용됩니다.
2025.02.08 - [Python] - [일단!] 데이터가 필요하다면? - 크롤링(Crawling)
[일단!] 데이터가 필요하다면? - 크롤링(Crawling)
[일단!] - 일단 실행해보세요! 멋진일이 일어날걸요?[알고!] - 코드 로직과 필요한 개념들을 같이 정리해봐요! 처음부터 기본부터 시작하면 다소 지루할 것 같아서, 국비수업을 들으며 가장 멋있
myqzq.tistory.com
오늘은 이전에 작성한 게시글의 코드를 셀레니움을 위주로 분석해보도록하겠습니다.
# requirements.txt
# 셀레니움 라이브러리
selenium
webdriver_manager
이전 게시글에서는 requirements.txt 파일을 작성했습니다.
requirements.txt 파일은 현재 프로젝트 또는 프로그램을 실행하는 데 필요한 라이브러리를 정의해 둔 문서입니다.
따라서 프로그램을 실행하기 전에 작업자는 이 파일에 명시된 라이브러리들을 먼저 확인하고 설치해야 합니다.
pip install -r requirements.txt
명령 프롬프트에서 파이썬 파일이 있는 경로로 이동한 후, 위 명령어를 실행하면 requirements.txt 파일에 작성된 라이브러리들이 자동으로 설치됩니다.
1. 라이브러리 임포트
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 webdriver_manager.chrome import ChromeDriverManager
이제 코드에서 해당 라이브러리들을 사용하기 위해 import 합니다.
2. 드라이버 설정
# 생성자를 호출하여 Options 클래스의 인스턴스를 생성
options = Options()
# 옵션 적용
# ChromeDriver가 예기치 않게 종료되거나 Python 스크립트가 종료될 때 브라우저 창이 자동으로 닫히지 않도록 설정
options.add_experimental_option('detach', True)
# 브라우저를 최대화된 상태로 시작하도록 하는 설정
options.add_argument('--start-maximized')
# 서비스 적용
# ChromeDriverManager를 통해 적절한 드라이버를 설치(브라우저 자동 업데이트)
service = Service(ChromeDriverManager().install())
# 옵션과 서비스를 적용한 새로운 드라이버생성
driver = webdriver.Chrome(service=service, options=options)
자동화 웹 브라우저를 생성하기 위해 드라이버 설정을 진행합니다.
이외에도 다양한 옵션이 있습니다.
헤드리스(Headless) 모드
브라우저 창을 띄우지 않고 백그라운드에서 실행할 수 있습니다.
options.add_argument('--headless')
창 크기 지정
브라우저 창의 크기를 지정할 수 있습니다.
options.add_argument('--window-size=1920,1080')
사용자 에이전트(User-Agent) 변경
웹 서버에 전달되는 사용자 에이전트 값을 변경하여 브라우저를 흉내낼 수 있습니다.
options.add_argument('--user-agent=사용자 에이전트 문자열')
시크릿 모드(Incognito) 실행
쿠키나 캐시를 남기지 않는 시크릿(또는 인코그니토) 모드로 실행할 수 있습니다.
options.add_argument('--incognito')
확장 프로그램(Extension) 비활성화
불필요한 확장 프로그램의 로드를 막아 브라우저 실행 속도를 높일 수 있습니다.
options.add_argument('--disable-extensions')
더욱 다양한 옵션은 셀레니움 공식 GitHub README를 참고할 수 있습니다.
(아래의 링크에서 셀레니움의 다양한 설정 옵션과 사용법을 확인할 수 있습니다.)
https://github.com/SeleniumHQ/selenium?tab=readme-ov-file#installing
GitHub - SeleniumHQ/selenium: A browser automation framework and ecosystem.
A browser automation framework and ecosystem. Contribute to SeleniumHQ/selenium development by creating an account on GitHub.
github.com
다음 글에서는 본격적으로 크롤링할 때 요소를 어떻게 선택하는지 알아보겠습니다!
'Python' 카테고리의 다른 글
[일단!] 유용한 편집기 - VS Code 설치 초보자도 쉽고 자세하게 (2) | 2025.02.08 |
---|---|
[알고!] 동적 웹크롤링 셀레니움(Selenium) - (하) (0) | 2025.02.08 |
[일단!] 데이터가 필요하다면? - 크롤링(Crawling) (2) | 2025.02.08 |