파이썬 셀레니움은 웹 사이트의 텍스트를 자동으로 추출하는 데 매우 유용한 도구입니다. 이 글에서는 셀레니움을 이용하여 웹 페이지의 텍스트를 추출하는 방법을 단계별로 자세히 알아보겠습니다. 셀레니움을 처음 사용하는 분들도 쉽게 따라할 수 있도록 상세하게 설명드릴게요.
파이썬 셀레니움 소개
파이썬 셀레니움은 웹 브라우저 자동화를 가능케 하는 강력한 도구입니다. 웹사이트 자동화 및 스크래핑, 다양한 브라우저 연동을 통해 반복적인 수작업을 줄이는 데 효과적입니다.
셀레니움은 다양한 프로그래밍 언어와 함께 사용할 수 있습니다. 그 중에 파이썬을 이용하면 강력한 기능을 쉽게 활용할 수 있다는 장점이 있습니다. 파이썬의 간결하고 직관적인 문법 덕분에 셀레니움을 처음 접하는 사용자도 비교적 쉽게 다룰 수 있습니다.
특히, 파이썬 셀레니움을 이용하면 브라우저를 프로그래밍으로 직접 제어하여 웹 페이지 상의 요소와 상호작용할 수 있습니다. 따라서 링크 클릭, 양식 제출, 그리고 텍스트 추출과 같은 다양한 작업들이 가능합니다. 이는 개발자들이 미리 정의된 시나리오를 자동으로 실행하고, 그 결과를 검증하는 데 있어 매우 유용합니다.
셀레니움 설치
파이썬에서 셀레니움을 사용하여 텍스트를 추출하기 위해서는 우선 셀레니움을 설치하고 설정해야 합니다.
셀레니움 패키지 설치
패키지 설치는 pip 명령어를 통해 간편하게 할 수 있으며, ‘pip install selenium’을 입력하여 설치할 수 있습니다.
웹드라이버 설치
셀레니움은 웹 브라우저와 상호작용하기 위해 WebDriver가 필요하므로, 사용하고자 하는 브라우저에 맞는 WebDriver도 다운로드합니다. 예를 들어, Chrome의 경우 ChromeDriver를 다운로드하여 경로를 지정합니다.
또는 크롬드라이버 매니저(ChromeDriverManager) 모듈을 이용하면, 버전에 맞는 크롬 드라이버를 자동으로 설치합니다.
텍스트 추출을 위한 셀레니움 코드
WebDriver 객체 생성
이제 파이썬에서 WebDriver 객체를 생성하여 브라우저를 실행합니다. 이는 보통 webdriver.Chrome()이나 webdriver.Firefox()와 같은 메서드를 호출해서 이뤄집니다.
아래 코드는 ChromeDriverManger를 이용해서, 알아서 버전에 맞는 웹드라이버를 다운로드하고 브라우저를 실행합니다.
from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service from selenium import webdriver driver = webdriver.Chrome(service= Service(ChromeDriverManager().install()))
웹사이트 이동
브라우저가 실행된 후에는 get()메서드에 url을 입력파라미터로 넣어 방문하려는 웹사이트로 이동합니다.
이 과정에서 올바른 WebDriver 경로 설정과 브라우저 버전을 일치하는 게 중요합닌다. 실행이 완료되면, WebDriverWait과 같은 도구를 활용하여 페이지가 완전히 로드될 때까지 대기 시간을 설정하거나 특정 요소가 로드될 때까지 기다릴 수 있습니다. 특히, 동적으로 로드되는 웹 요소들이 있어서 이러한 대기 설정은 필수적입니다.
이를 통해 텍스트 추출 작업에서 보다 명확하고 오류 없이 데이터를 수집할 수 있습니다. 파이썬에서 셀레니움 패키지로 웹브라우저를 띄우고, 원하는 사이트로 이동했다면 웹 페이지의 텍스트를 추출할 준비가 끝났습니다.
driver.get("https://stock.infoking.site")
웹 페이지에서 텍스트 추출하기
웹 페이지에서 텍스트를 추출하기 위해 가장 먼저 해야 할 일은 원하는 웹 요소를 정확하게 식별하는 것입니다. 셀레니움에서는 HTML 요소의 ID, 클래스, 태그명, CSS 셀렉터 등 다양한 방법으로 요소를 찾을 수 있습니다.
각 방법은 상황에 따라 적절하게 선택하여 사용해야 하며, 페이지 구조나 개발자의 의도에 따라 다른 결과를 가져올 수 있어 정확한 유형 선택과 세밀한 지정을 필요로 합니다. 텍스트 추출은 선택한 요소의 text 값을 가져오면 됩니다. 이를 통해 특정 웹 요소에 포함된 텍스트를 쉽게 가져올 수 있습니다. 아래 코드는 h1 태그에 텍스를 추출하는 코드입니다.
from selenium.webdriver.common.by import By h1_element = driver.find_element(By.TAG_NAME, "h1") h1_element.text
그러나 검색한 요소에 텍스트가 포함되어 있는지 반드시 확인해야 합니다. 만약 요소가 비어있거나 동적으로 생성된 경우, JavaScript 실행 후나 페이지 업데이트 후에도 텍스트를 얻을 수 있는지 점검해야 하기에 기다림과 관련된 설정도 고려하는 것이 좋습니다.
또한 추출된 텍스트 데이터는 필요에 따라 전처리를 거쳐야 합니다. 공백 제거, 특수 문자의 처리, 필요 없는 문자열의 삭제 등의 과정을 통해 데이터의 일관성과 유용성을 높일 수 있습니다. 특히 여러 페이지에서 반복적으로 수행할 경우 정규 표현식을 활용하면 보다 효율적인 처리가 가능합니다. 이런 과정을 통해 얻은 텍스트는 다양한 분석과 통계 작업에 유용하게 활용될 수 있습니다.
파이썬 셀레니움을 활용하면 웹 페이지에서 필요한 정보를 자동화하여 쉽게 추출할 수 있습니다. 그러나 크롤링 시 법적, 윤리적 문제를 항상 염두에 두고 적절한 범위 내에서 사용해야 합니다. 셀레니움을 잘 활용해서 업무 효율성을 크게 향상시켜보세요.