본문 바로가기

스크립트

컨테이너 기반 Selenium 크롤링하는 방법

반응형

컨테이너 기반 Selenium 크롤링하는 방법

전체 구조

[ MacOS ]
   |
   |  docker run
   v
[ Selenium Container ]
   ├─ Linux
   ├─ Firefox / Chrome
   ├─ WebDriver
   └─ Selenium Server (4444)
           ↑
           |
[ Python 크롤러 ]
(Remote WebDriver로 접속)

Selenium 컨테이너 실행

공식 Selenium 이미지 사용

docker run -d \
  --name selenium-firefox \
  -p 4444:4444 \
  selenium/standalone-firefox

실행 확인

docker ps

Selenium 서버 동작 확인

브라우저에서 아래 주소 접속

http://localhost:4444
  • Selenium Grid UI 화면이 나오면 정상 동작

컨테이너 종료

docker rm -f selenium-firefox

Python 크롤러 컨테이너 구성

디렉토리 구조

selenium-crawler/
 ├─ Dockerfile
 └─ crawl.py

Dockerfile 작성

vim Dockerfile
FROM python:3.13-slim

WORKDIR /app

RUN pip install selenium

COPY crawl.py .

CMD ["python", "crawl.py"]

crawl.py 작성 (Selenium 4 기준)

vim crawl.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.options import Options

options = Options()
options.add_argument("--headless")

driver = webdriver.Remote(
    command_executor="http://selenium:4444/wd/hub",
    options=options
)

driver.get("http://scbyun.com")
print("Title:", driver.title)

links = driver.find_elements(By.TAG_NAME, "a")
for link in links:
    print(link.text, link.get_attribute("href"))

driver.quit()
728x90

Docker Network로 컨테이너 연결

네트워크 생성

  • 같은 네트워크에 있어야 서로 이름으로 접근 가능
docker network create selenium-net

Selenium 컨테이너 실행

docker run -d \
  --name selenium-firefox \
  --network selenium-net \
  -p 4444:4444 \
  selenium/standalone-firefox

Python 크롤러 이미지 빌드

docker build -t crawler .

실행

docker run --rm \
  --network selenium-net \
  crawler
Title: 변군이글루 블로그(Byeon-gun's Igloo Blog)
본문 바로가기 https://www.scbyun.com/#content
변군이글루 블로그(Byeon-gun's Igloo Blog) https://www.scbyun.com/
리눅스 https://www.scbyun.com/category/%EB%A6%AC%EB%88%85%EC%8A%A4
클라우드 https://www.scbyun.com/category/%ED%8D%BC%EB%B8%94%EB%A6%AD%20%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C
네임서버 https://www.scbyun.com/category/%EB%84%A4%EC%9E%84%EC%84%9C%EB%B2%84
스크립트 https://www.scbyun.com/category/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8
원도우 https://www.scbyun.com/category/%EC%9B%90%EB%8F%84%EC%9A%B0
링크 https://www.scbyun.com/category/%EB%A7%81%ED%81%AC
MyPage https://scbyun.com/1346
KrCERT https://www.krcert.or.kr/main.do
관리자 https://www.scbyun.com/manage
Vault OTP 계정과 로컬 계정을 함께 사용하는 SSH 인증 구성하는 방법
Vault OTP 계정과 로컬 계정을 함께 사용하는 SSH 인증 구성하는 방법HashiCorp Vault 기반 OTP 계정 접속과 기존 로컬 Unix 계정 접속을 동시에 지원하기 위한 PAM 기반 SSH 인증 구성 방법입니다.인증 동작 방식Vault OTP 계정 로그인 (예: vault_user1)vault_user1 + OTP └─ pam_exec(vault-ssh-helper) → 성공 └─ sufficient → 로그인 허용로컬 계정 로그인 (예: local_user1)local_user1 + local password └─ pam_exec(vault-ssh-helper) → 실패 (OTP 아님) └─ sufficient 무시 └─ common-auth (pam_unix..
더보기 https://www.scbyun.com/711097

docker-compose로 Selenium 크롤링 한 번에 실행하기

docker-compose.yml 작성

vim docker-compose.yml
services:

  selenium:
    image: selenium/standalone-firefox
    container_name: selenium-firefox
    ports:
      - "4444:4444"
    shm_size: "2gb"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4444"]
      interval: 5s
      timeout: 3s
      retries: 10

  crawler:
    build: .
    container_name: selenium-crawler
    depends_on:
      selenium:
        condition: service_healthy

실행 후 자동 종료시키기

docker compose up --build --abort-on-container-exit
selenium-crawler  | Title: 변군이글루 블로그(Byeon-gun's Igloo Blog)
selenium-crawler  | 본문 바로가기 https://www.scbyun.com/#content
selenium-crawler  | 변군이글루 블로그(Byeon-gun's Igloo Blog) https://www.scbyun.com/
selenium-crawler  | 리눅스 https://www.scbyun.com/category/%EB%A6%AC%EB%88%85%EC%8A%A4
selenium-crawler  | 클라우드 https://www.scbyun.com/category/%ED%8D%BC%EB%B8%94%EB%A6%AD%20%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C
selenium-crawler  | 네임서버 https://www.scbyun.com/category/%EB%84%A4%EC%9E%84%EC%84%9C%EB%B2%84
selenium-crawler  | 스크립트 https://www.scbyun.com/category/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8
selenium-crawler  | 원도우 https://www.scbyun.com/category/%EC%9B%90%EB%8F%84%EC%9A%B0
selenium-crawler  | 링크 https://www.scbyun.com/category/%EB%A7%81%ED%81%AC
selenium-crawler  | MyPage https://scbyun.com/1346
selenium-crawler  | KrCERT https://www.krcert.or.kr/main.do
selenium-crawler  | 관리자 https://www.scbyun.com/manage
selenium-crawler  | Vault OTP 계정과 로컬 계정을 함께 사용하는 SSH 인증 구성하는 방법
selenium-crawler  | Vault OTP 계정과 로컬 계정을 함께 사용하는 SSH 인증 구성하는 방법HashiCorp Vault 기반 OTP 계정 접속과 기존 로컬 Unix 계정 접속을 동시에 지원하기 위한 PAM 기반 SSH 인증 구성 방법입니다.인증 동작 방식Vault OTP 계정 로그인 (예: vault_user1)vault_user1 + OTP └─ pam_exec(vault-ssh-helper) → 성공 └─ sufficient → 로그인 허용로컬 계정 로그인 (예: local_user1)local_user1 + local password └─ pam_exec(vault-ssh-helper) → 실패 (OTP 아님) └─ sufficient 무시 └─ common-auth (pam_unix..
selenium-crawler  | 더보기 https://www.scbyun.com/711097
  • 크롤러 끝나면 Selenium도 같이 내려감

 

728x90
반응형

'스크립트' 카테고리의 다른 글

파이썬 스크립트를 작성하고 실행하는 방법  (0) 2025.06.26
파이션 파일 입출력  (0) 2025.06.26
파이션 예외 처리  (0) 2025.06.26
파이션 시스템 상호 작용 및 관리  (0) 2025.06.26
파이션 텍스트 처리  (0) 2025.06.26