Skip to content

파이썬으로 비행기표 최저가 및 환율 정보 수집 후 메일 자동 발송

Notifications You must be signed in to change notification settings

SHYDEV-KR/TravelMail

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✈️ TravelMail

🔓 프로젝트 설명

코로나 이후 드디어 일본여행이 가능해지면서, 일본행 비행기표 가격과 환율 정보를 매일 전달받고 싶은 마음에 시작한 작은 프로젝트입니다.

항공권 최저가 확인이 가능한 사이트에서 지정된 날짜의 지정된 여행지의 왕복&직항 비행기표 정보를 찾아 환율과 함께 매일 12시에 메일로 보내줍니다.

📊 수행하는 작업

  1. 비행기표 데이터 수집 및 처리, 가공
  2. 환율 정보 API 받아오기 및 처리, 가공
  3. 최근 30영업일 간의 환율 차트 생성 및 PNG 저장
  4. 비행기표 정보와 환율 정보를 담은 메일 발송기능
  5. 오라클 클라우드 서버에서 주기적으로 환율 정보 수집 및 메일 발송 (매일 12시 점심)
  6. 노션 데이터베이스에 모든 프로젝트 데이터 저장

✏️ 사용된 기술종류와 기술 설명

  • Selenium : 동적인 크롤링이 가능한 셀레니움을 이용해 사이트에 접속, 최저가 페이지를 캡쳐하고, 사이트의 HTML코드를 가져옵니다.
  • BS4(BeautifulSoup) : Selenium으로 가져온 HTML에서 원하는 값을 추출하고 다룰 수 있도록 해줍니다.
  • smtplib : 파이썬 환경에서 이메일을 보낼 수 있게 해주는 패키지입니다. 이미지 첨부, 메일 템플릿 수정이 가능합니다.
  • requests : 서버로 request를 보낼 수 있습니다. 한국수출입은행 API 활용을 위해 사용하였습니다.
  • 한국수출입은행 API : 환율 정보를 제공해주는 서비스입니다. 원-엔 환율 데이터를 받아옵니다.
  • ORACLE CLOUD SERVER : 매일 주기적으로 프로그램을 돌려 정보수집 및 메일 발송을 하기위해 따로 서버를 활용하고 있습니다.
  • pandas : 크롤링한 데이터 및 csv 파일을 DataFrame의 형태로 수정, 가공을 위해 필요한 패키지입니다.
  • matplotlib : 데이터를 시각화해주는 패키지입니다. 환율 데이터를 그래프화해줍니다.
  • Notion Database : 노션페이지를 데이터베이스로 활용하고 있습니다.

📩 이메일 예시 :

mail_example

📎 첨부파일 :

📸 셀레니움 캡쳐 결과

price

💴 환율 차트 생성 결과

recent_jpy_currency

🛠 To Dos

  • 유저마다 원하는 날짜에 맞게 개인화된 항공권 검색 기능
  • 유저마다 원하는 여행지에 맞게 개인화된 항공권 검색 기능
  • 유저마다 원하는 통화에 맞는 개인화된 환율 정보 제공 기능
  • requests와 selenium 성능 비교 -> requests로 크롤링 힘듦
  • requests 성능이 좋다면, 이미지 캡쳐의 대안 찾기
  • 유저 데이터 DB에 저장하기 (2022.10.28 기능 추가 완료)
    • DB 어떤 것 사용할지 정하기 : Notion DB
    • DB 스키마 짜기
  • 웹에서 신청 받아 DB에 추가
    • 유저의 신청 정보가 겹치면 묶어서 데이터 수집 1회만 수행한 후 메일 다건 동시에 발송
    • Flask? Fast API? 어떤 프레임워크 사용할 것인지 정하기
    • 웹과 크롤링이 섞이게 되면 프로젝트 구조를 어떻게 만들어야할지 알아보기

About

파이썬으로 비행기표 최저가 및 환율 정보 수집 후 메일 자동 발송

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages