03. 스크래핑 API 서버 제작

2024. 11. 7. 19:38·Web/코테 준비용 서비스 만들기

Scraping-API 서비스 전체 구조

스크래핑 API 서버 구조도
 

위 구조는 app.py를 중심으로 각 구성 요소가 연결되는 방식이다. 각 구성 요소는 다음과 같은 역할을 수행한다.

  • app.py: Flask 애플리케이션의 진입점으로, API를 정의하고 스케줄러를 설정해 주기적인 작업을 수행할 수 있도록 한다. 이 파일에서 BaekjoonScraper와 StepService 인스턴스를 생성해 단계별 정보와 문제 정보를 가져오는 API를 제공한다.
  • DB_Connection: MySQL 데이터베이스에 연결 및 커넥션을 관리한다.
  • Step_Service: 단계별 내용 및 문제 내용 등을 스크래핑하고, 이를 매일마다 갱신하는 배치 동작을 수행한다.
  • Problem_Service: 백준 문제의 세부 정보를 스크래핑하여 문제의 제목, 설명, 입력 및 출력 예제 등을 수집한다.

 

Scraping-API 서비스 상세 내용

1. DB_Connection

이 파일은 MySQL 데이터베이스 연결을 관리한다. 주요 함수는 다음과 같다.

  • load_env_file: 환경 변수 파일 .env를 로드하는 함수다. 먼저 /config/.env 경로에서 파일을 불러오고, 실패 시 기본 경로에서 다시 로드한다.
  • get_db_connection: 환경 변수로 설정된 MySQL 정보(host, port, database, user, password, charset)를 사용해 데이터베이스에 연결하는 함수다. 연결 성공 시 MySQL 커넥션 객체를 반환하고, 오류가 발생하면 None을 반환하여 연결 실패를 알린다.

이 파일은 API 서버가 안정적으로 DB와 통신할 수 있도록, 설정과 연결 관리를 책임진다.

 

2. Step_Service

StepService는 백준 단계 목록을 스크래핑하여 데이터베이스에 저장하고, 저장된 데이터를 조회하는 역할을 한다.

  • scrape_steps: 백준 사이트에서 단계 목록을 가져와 ID, 제목, 설명, 문제 수 등의 정보를 리스트로 반환한다. 주기적인 갱신을 위해 사용된다.
  • save_steps_to_db: scrape_steps에서 가져온 단계 목록을 데이터베이스에 저장한다. 이미 존재하는 단계는 업데이트하고, 새로운 단계는 추가하여 최신 상태를 유지한다.
  • get_all_steps: 데이터베이스에서 단계 목록을 조회하며, 데이터가 없는 경우 scrape_steps를 통해 데이터를 가져와 저장한 후 반환한다.

이 클래스는 단계 데이터를 스크래핑하고 DB에 저장 및 관리함으로써, 서비스가 항상 최신 단계 정보를 제공할 수 있도록 돕는다.

 

3. Problem_Service

ProblemService는 특정 단계에 속한 문제와 각 문제의 상세 정보를 스크래핑해 데이터베이스에 저장하고, 필요 시 데이터를 조회하는 역할을 수행한다.

  • scrape_step_problems: 백준 사이트에서 특정 단계의 문제 목록을 스크래핑하여, 문제 ID, 제목, 해결 횟수, 제출 횟수 등 문제의 기본 정보를 리스트 형태로 반환한다.
  • save_step_problems_to_db: scrape_step_problems에서 가져온 문제 목록을 데이터베이스에 저장한다. 기존에 저장된 문제가 있을 경우 최신 정보로 업데이트한다.
  • scrape_problem_details: 특정 문제의 상세 정보를 스크래핑하여 제목, 설명, 입력/출력 형식, 예제 등을 가져와 반환한다.
  • save_problem_details_to_db: scrape_problem_details로 가져온 문제의 상세 정보를 데이터베이스에 저장한다. 데이터가 이미 존재할 경우 업데이트한다.
  • get_step_problems: 데이터베이스에서 특정 단계의 문제 목록을 조회하며, 데이터가 없는 경우 스크래핑 후 저장하여 반환한다.

이 클래스는 문제 정보의 스크래핑, 데이터베이스 저장 및 업데이트를 통해, 항상 최신의 문제 데이터를 서비스에 제공할 수 있도록 한다.

저작자표시 비영리 변경금지 (새창열림)

'Web > 코테 준비용 서비스 만들기' 카테고리의 다른 글

06. API Gateway 서버 제작 (1)  (0) 2024.11.10
05. AI API 서버 제작  (0) 2024.11.09
04. 코드 API 서버 제작  (1) 2024.11.08
02. 서비스를 구상해보자!  (3) 2024.10.29
01. 코테 준비를 위한 서비스를 만들어보자!  (0) 2024.10.29
'Web/코테 준비용 서비스 만들기' 카테고리의 다른 글
  • 05. AI API 서버 제작
  • 04. 코드 API 서버 제작
  • 02. 서비스를 구상해보자!
  • 01. 코테 준비를 위한 서비스를 만들어보자!
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    Entity
    OpenAI API
    spring boot
    쿠버네티스
    리액트
    chat GPT
    백준
    인스타그램
    예외
    스프링부트
    오블완
    스프링 부트
    클러스터
    react
    mapstruct
    클론코딩
    REST API
    Java
    MSA
    티스토리챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
03. 스크래핑 API 서버 제작
상단으로

티스토리툴바