새소식

반응형
Python/자동화

[파이썬 웹크롤링 기초] selenium 소개 및 사용법 1탄

  • -
반응형

Selenium은 웹 브라우저를 자동으로 제어하여 웹페이지를 테스트하고 조작할 수 있게 해주는 프레임워크입니다.

특히 웹 개발자와 QA 엔지니어에게 매우 인기 있는 도구 중 하나입니다.

Selenium의 주요 특징:

  1. 다양한 언어 지원: Java, Python, C#, Ruby, JavaScript 등 다양한 프로그래밍 언어에서 사용할 수 있습니다. 
  2. 브라우저 호환성: 대부분의 주요 웹 브라우저(Chrome, Firefox, Safari, Edge 등)와 호환됩니다. 또한 각 브라우저마다의 WebDriver를 제공하여 해당 브라우저를 자동으로 제어할 수 있습니다.
  3. 다양한 플랫폼 지원: Windows, macOS, Linux 등 다양한 운영 체제에서 사용할 수 있습니다.
  4. 다양한 웹 테스팅 기능: 웹페이지의 요소를 찾고, 클릭하고, 텍스트를 입력하고, 폼을 제출하고, 스크롤하고, 페이지를 탐색하는 등 다양한 웹 테스팅 및 자동화 작업을 수행할 수 있는 기능을 제공합니다.
  5. 강력한 웹 테스트 스크립트 작성: 웹페이지에서 동적으로 변경되는 요소들을 감지하고 처리할 수 있도록 설계되었습니다. 이를 통해 복잡한 웹 애플리케이션의 테스트도 쉽게 수행할 수 있습니다.
  6. 클라우드 테스트 통합: 다양한 클라우드 테스트 플랫폼과 통합되어 대규모 테스트를 자동화하고 분산 시스템에서 실행할 수 있습니다.
  7. 커뮤니티 및 생태계: 활발한 커뮤니티와 생태계를 가지고 있어서, 다른 사용자들과의 지식 공유와 지원을 받을 수 있습니다. 또한 다양한 확장 기능과 플러그인을 사용하여 Selenium을 더욱 강력하게 확장할 수 있습니다.

Selenium은 크롤링뿐만 아니라 웹 애플리케이션의 품질을 향상시키고 개발 생산성을 높이는 데 매우 유용한 도구입니다.

 

특히 CI/CD 파이프라인에서 자동화된 웹 테스트를 통해 애플리케이션의 안정성과 신뢰성을 확보할 수 있습니다.

 
 

 

이제 Selenium을 사용해 봅시다.

우선 Selenium을 설치 합니다. 

pip install selenium

 

 

 

WebDriver 설치: Selenium은 브라우저를 제어하기 위해 웹 드라이버를 사용합니다. 사용할 웹 브라우저에 맞는 드라이버를 설치해야 합니다. 예를 들어, Chrome 브라우저를 사용할 경우에는 Chrome WebDriver를 설치해야 합니다. WebDriver는 각 브라우저의 공식 웹사이트에서 다운로드할 수 있습니다.

https://googlechromelabs.github.io/chrome-for-testing/#stable

 

Chrome for Testing availability

chrome-headless-shellmac-arm64https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.58/mac-arm64/chrome-headless-shell-mac-arm64.zip200

googlechromelabs.github.io

 

반응형

 

WebDriver 설정: WebDriver의 경로를 지정해야 합니다.

 

Selenium 사용하기:

우선 전체코드부터 보겠습니다.

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

driver_path = "경로/chromedriver"  # WebDriver의 경로 설정

service = Service(executable_path=driver_path)

options = webdriver.ChromeOptions()

driver = webdriver.Chrome(service=service, options=options)

# 웹페이지 열기
driver.get("https://search.shopping.naver.com/search/all?query=아기침대")

# 웹페이지에서 요소 찾기
element = driver.find_element(By.XPATH, '//*[@id="content"]/div[1]/div[2]/div/div[3]/div/div/div[2]/div[1]/a')
print('element', element.text)

# 웹페이지 닫기
driver.quit()

 

네이버 쇼핑에서 아기침대를 검색했을 경우 특정 태그의 text를 가져오는 코드입니다.

 

특정 태그, 즉 find_element에 지정할 경로는 다음과 같이 찾습니다.

 

1. 긁어올 텍스트위에서 마우스 우클릭하여 검사(Inspect)를 누릅니다.

 

tag-inspect

 

 

2. 크롬 개발자 콘솔창이 뜹니다. 원하는 텍스트의 태그 위에 파란줄이 쳐져 있습니다.

console-open

 

 

3. 그 위에서 마우스 우클릭하고 Copy XPath를 해서 가져온것을 사용합니다.

get-xpath

 

By.XPATH, 오른쪽에 복사해줍니다.

element = driver.find_element(By.XPATH, '//*[@id="content"]/div[1]/div[2]/div/div[3]/div/div/div[2]/div[1]/a')

 

 

실행한 결과는 다음과 같습니다.

 

crawling-result

 

크롤링이 잘된것을 볼 수 있습니다.

 

 

------------------------------------

2024년 3월 23일 기준  정상 작동 합니다.

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.