Selenium 모듈 설치(feat. Visual Studio Code)
1. Visual Studio Code 최신버전 설치 후, 실행
2. Open Folser 클릭 -> C드라이브에서 본이만의 폴더 생성
3. 왼쪽 Extantion 메뉴에서 "Python" 검색 후, 확장팩 설치
4. 다시 Explorer로 돌아와 New File 클릭해서 파일 생성후, .py 파일로 변환
5. 상단 Workspace에서 Show and Run Commands 클릭 후, Python: Select Interpreter 선택
6. .py 파일 왼쪽 클릭 후, Open in integrated terminal 클릭
7. pip install selenium 입력하여, 모듈 설치
8. "chrome://settings/help" 를 입력하여, Chrome 설정에 들어갑니다. 버전을 확인합니다.
9. Chrome Diver를 검색해서 버전에 맞는 드라이브를 설치합니다. 경로를 C드라이버의 본인의 폴더로 설정합니다.
여기까지 환경 세팅이 끝났습니다. 이제 Selenium을 활용해 본격적으로 크롤링을 해봅시다.
크롤링을 위한 환경세팅
아래 명령어를 통해 웹 크롤링을 하기 위한 selenium모듈의 클래스를 불러옵니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
이 코드는 Selenium WebDriver를 사용하여 웹 페이지에서 원하는 요소를 찾는 방법 중 하나인 By 클래스를 사용하는 코드입니다. 먼저, selenium 모듈에서 webdriver 클래스를 import 합니다. 이 클래스는 Selenium WebDriver 객체를 생성하는 데 사용됩니다. 다음으로, By 클래스를 import 합니다. By 클래스는 다양한 요소를 찾는 방법을 제공해줍니다. 예를 들어, By.ID는 id 속성을 사용하여 요소를 찾는 방법을 나타내며, By.XPATH는 XPath 표현식을 사용하여 요소를 찾는 방법을 나타냅니다. 요소를 찾는 방법을 지정하려면, find_element() 또는 find_elements() 메서드를 사용하여 요소를 찾으려는 웹 페이지에서 지정된 방법으로 요소를 검색합니다. 예를 들어, 다음과 같이 find_element() 메서드와 By.ID를 사용하여 id가 "myElement"인 요소를 찾을 수 있습니다.
element = driver.find_element(By.ID, "myElement")
이를 통해 웹 페이지에서 원하는 요소를 선택하여, 요소를 클릭하거나, 텍스트만 추출하는 등 다양한 동작을 수행할 수 있습니다. 다음은 아래 코드를 입력합니다.
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox') # 보안 기능 비활성화 (샌드박스라는 공간을 비활성화 시킨다는 뜻)
options.add_argument('--disable-dev-shm-usage') # /dev/shm(공유메모리) 디렉토리를 사용하지 않는다는 뜻
driver = webdriver.Chrome('chromedriver', options=options)
위 코드는 Selenium을 사용하여 Chrome 브라우저를 실행하는 하나의 예시입니다. 코드의 내용을 하나씩 살펴보겠습니다.
ChromeOptions 객체 생성
options = webdriver.ChromeOptions() 코드는 ChromeOptions 객체를 생성합니다. 이 객체는 Chrome 브라우저의 실행 옵션을 설정하는 데 사용됩니다.
실행 옵션 설정
1) options.add_argument('--no-sandbox') 코드는 Chrome 브라우저가 샌드박스 모드로 실행되지 않도록 설정합니다. 샌드박스 모드란, 브라우저가 보안상의 이유로 다른 프로세스와 격리된 환경에서 실행되는 것을 말합니다.
2) options.add_argument('--disable-dev-shm-usage') 코드는 Chrome 브라우저가 /dev/shm 폴더를 사용하지 않도록 설정합니다. /dev/shm 폴더는 램(메모리)을 사용하는 가상 파일 시스템으로, 크롬 브라우저가 램을 많이 사용하여 성능 문제가 발생할 수 있기 때문입니다.
Chrome 웹 드라이버 객체 생성
driver = webdriver.Chrome('chromedriver', options=options) 코드는 webdriver.Chrome() 함수를 호출하여 Chrome 웹 드라이버 객체를 생성합니다. executable_path 매개변수로는 로컬에 설치된 Chrome 웹 드라이버 파일의 경로를 입력합니다. 이때, chromedriver 파일의 이름이나 경로가 다르다면, 아래와 같이 해당 경로와 파일 이름을 지정해주어야 합니다.
# Chrome 웹 드라이버 경로 지정
driver_path = "/path/to/chromedriver"
# Chrome 웹 드라이버 객체 생성
driver = webdriver.Chrome(executable_path=driver_path)
여기까지 샌드박스 모드와 /dev/shm 폴더 사용을 비활성화하여 Chrome 브라우저가 더 안정적으로 동작하도록 설정한 후, 이를 기반으로 Selenium을 사용하여 활용해 크롤링을 위한 환경세팅을 마쳐보았습니다.
'데이터분석 > 크롤링' 카테고리의 다른 글
파이썬 퀀트투자(3): 한국거래소 개별종목 지표 크롤링 (3) | 2024.10.09 |
---|---|
파이썬 퀀트투자(2): 한국거래소 업종 분류 현황 크롤링 (1) | 2024.10.09 |
파이썬 퀀트투자(1): 최근 영업일 기준 데이터 크롤링 (7) | 2024.10.09 |
BeautifulSoup을 이용한 정적 크롤링 개념 정리 및 실습 (0) | 2024.03.15 |
파이썬 웹 크롤링 환경세팅(VScode, miniconda, selenium) 및 예시코드 (0) | 2023.12.10 |
댓글