본문 바로가기
카테고리 없음

뉴스 기사 추출하는 코드 만들어 줄래? 2탄 docker 올려보자

by 디마드 2024. 12. 27.
반응형

지난 시간에 인공지능에 지시해 만든 웹 크롤링 프로그램을 docker로 배포해 보자. 

2024.12.27 - [코드리뷰/chatGPT(Python)코드] - 뉴스 기사 추출하는 코드 만들어 줄래? (Chatgpt / Claude)

 

뉴스 기사 추출하는 코드 만들어 줄래? (Chatgpt / Claude)

네이버 최신 뉴스 헤드라인을 추출해 보자. 일반적으로 웹 데이터를 추출하는 것을 웹크롤링이라 한다. 주로 파이썬을 이용해 웹 페이지 분석 후 필요한 데이터를 가져오는 코드를 작성하는데,

iamgus.tistory.com

장점은 이미지로 배포하고 실행할 때는 컨테이너에 올리기 때문에 호환성 문제와 독립된 환경을 가질 수 있다. 즉, 파이썬 설치하거나 selenium은 같은 패키지 등을 배포하는 작업 없이 docker 이미지에 다 포함시키면 된다. 

단점은 docker를 어느정도 이해하고 있어야 한다. 명령어를 익히고 몇 가지 샘플을 만들어 보는 게 필요하다. 

1. dockerfile 만들기

크롤링 소스와 같은 디렉토리에 dockerfile을 만든다.

# 베이스 이미지 설정
FROM python:3.10-slim

# 필요한 OS 패키지 설치
RUN apt-get update && apt-get install -y \
    wget \
    curl \
    unzip \
    chromium-driver \
    && apt-get clean

# 작업 디렉토리 설정
WORKDIR /app

# Python 의존성 파일 복사 및 설치
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 애플리케이션 소스 복사
COPY . .

# 포트 열기 (선택)
EXPOSE 5000

# 애플리케이션 실행 명령
CMD ["python", "news_s.py"]

2. requirements.txt 파일 작성

파이썬 크롤링에 사용할 패키지 목록을 작성한다. docker 이미지 생성 시 자동 설치한다. 버전을 명시하지 않으면 최신버전을 받아온다. numpy와 pandas는 버전이 맞지 않으면 에러가 난다. 호환 버전을 명시하는 게 좋다. 

selenium==4.10.0
numpy==1.23.5
pandas==1.5.3
openpyxl==3.1.2

다음과 같이 만들어도 된다.  pip freeze > requirements.txt 

3. docker 이미지 만들기

docker build -t news-scraper:latest .

 

4. docer 이미지 확인

docker images 

5. docker 실행하기

docker run --name news-scraper-container -v ${PWD}/output:/app/output news-scraper:latest

재실행하려면 docker start news-scraper-container

6. docker 컨테이너 확인

7. docker 로그 확인

[정상]

[에러]

8. docker 컨테이너 삭제 

docker rm news-scraper-container

9. docker 이미지 삭제

(1) docker 이미지 id 찾기 

(2) docker 이미지 삭제

docker rmi d3da5e1f8e0d

반응형

댓글