Skip to content

SongSeungYun/insta_matzip_map

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

인스타그램 인플루언서 게시물 기반 맛집 지도

프로젝트 시작 계기 및 소개

제가 평소에 보는 맛집 인플루언서가 있는데 그 분께서 소개하시는 맛집들을 한 번에 보기 위해서 프로젝트를 시작하게 되었습니다.

이 프로젝트는 인스타그램 인플루언서의 게시물을 기반으로 맛집 정보를 수집하고, 이를 지도에 표시하는 웹 애플리케이션입니다. 사용자는 밥집, 카페, 술집 카테고리별로 원하는 맛집 정보를 지도에서 확인하고, 관련된 소셜 미디어 링크와 지도 서비스를 통해 추가 정보를 얻을 수 있습니다.

기술 스택

프론트엔드: HTML/CSS/JavaScript

백엔드: Node.js + Express

데이터 추출: Python

주요 기능

인스타그램 크롤링: 인플루언서 계정의 게시물을 자동으로 크롤링하여 맛집 정보를 수집합니다.

AI 분석: Perplexity AI API를 활용해 게시물 텍스트에서 식당 정보를 추출합니다.

지도 표시: 카카오맵 API를 사용하여 맛집 위치를 지도에 시각적으로 표시합니다.

카테고리 필터링: 밥집, 카페, 술집 카테고리를 선택하여 마커를 필터링할 수 있습니다.

인포윈도우 제공: 각 맛집에 대한 상세 정보(이름, 주소, 메인 메뉴)와 관련된 링크(인스타 릴스, 구글 지도, 네이버 지도, 카카오맵)를 제공합니다.

설치 및 실행 방법

  1. 프로젝트 클론
git clone https://github.com/SongSeungYun/insta_matzip_map
cd insta_matzip_map
  1. Python 의존성 설치 requirements.txt 파일을 사용해 필요한 Python 패키지를 설치
cd get_data
pip install -r requirements.txt
  1. Node.js 의존성 설치 Node.js 환경에서 필요한 패키지를 설치
cd ../back
npm install
  1. 환경 변수 설정 data/secret.json 파일을 생성하고 아래 내용을 입력하세요:
{
    "MAP_API_KEY": "카카오 맵 API 키",
    "Insta_ID": "인스타그램 아이디",
    "Insta_PW": "인스타그램 비밀번호",
    "AI_API_KEY": "Perplexity AI API 키"
}

5.원하는 인스타그램 인플루언서 추가

get_data/crawling.py 60번째 줄로 이동해서 원하는 인스타그램 계정의 아이디를 적어주세요. ex) account_id=["example1", "example2"]

++추가로 기존 데이터를 없애고 싶으시면 data 폴더의 json파일들을 다음과 같이 수정해주세요.

post_count.json

{
    "dummy": 0
}

restaurants_infos.json

{
    "restaurants":[
        {
      "name": "성진묵은지감자탕",
      "address": "인천광역시 연수구 연수동 601-17",
      "main_menu": [
        "감자탕",
        "뼈해장국"
      ],
      "type": "밥집",
      "latitude": 37.4191608,
      "longitude": 126.6849462,
      "reels_link": "https://www.instagram.com/p/CGAH6X7B9RZ/"
        }
    ]
}

더미 데이터들은 추후 인스타그램 크롤링 후 삭제해도 무방합니다!

  1. 서버 실행 Python 크롤링 및 데이터 분석 실행:

cd ../get_data python main.py

크롤링이 완료된 후 Node.js 서버 실행:

cd back node app.js

  1. 웹 애플리케이션 접속 브라우저에서 http://localhost:3000으로 접속하여 애플리케이션을 확인합니다.

사용법

  1. 지도 인터페이스 탐색 카테고리 선택: 화면 상단의 메뉴(밥집, 카페, 술집)를 클릭하여 원하는 카테고리의 마커를 표시하거나 숨길 수 있습니다.

마커 클릭: 마커를 클릭하면 해당 맛집의 상세 정보(이름, 주소, 메인 메뉴)와 관련된 링크(인스타 릴스, 구글 지도, 네이버 지도, 카카오맵)가 표시됩니다.

  1. 데이터 업데이트 (크롤링) 새로운 데이터를 가져오려면 Python 스크립트를 다시 실행하세요:
python main.py

이 명령은 인스타그램에서 최신 게시물을 크롤링하고 AI를 통해 분석한 결과를 업데이트합니다.

파일 구조

INSTA_MATZIP_CRAWLING/
├── back/                     # Node.js 백엔드 코드
│   ├── public/               # 프론트엔드 정적 파일 (HTML, CSS, JS)
│   │   ├── css/              # 스타일 파일 (CSS)
│   │   ├── image/            # 마커 이미지 및 기타 이미지 파일
│   │   ├── javascript/       # 클라이언트 측 JavaScript 파일 (map.js)
│   │   └── views/            # EJS 템플릿 파일 (index.ejs)
│   ├── app.js                # Express 서버 설정 파일
│   └── package.json          # Node.js 패키지 설정 파일
├── data/                     # 데이터 저장 폴더
│   ├── secret.json           # API 키 및 환경 변수 설정 파일 (사용자 생성 필요)
│   ├── post_count.json       # 크롤링한 게시물 개수 기록 파일
│   └── restaurants_infos.json# 식당 정보 저장 파일
├── get_data/                 # 데이터 처리 모듈(Python)
│   ├── crawling.py           # 인스타그램 크롤링 코드
│   └── data_analyzing.py     # AI 데이터 분석 코드
├── main.py                   # Python 메인 실행 파일 (크롤링 및 데이터 분석)
├── requirements.txt          # Python 의존성 목록 파일
├── .gitignore                # Git에 포함되지 않을 파일 목록 설정 (.json 등 민감한 정보 제외)
└── README.md                 # 프로젝트 설명 문서

About

인스타그램 인플루언서 게시물 기반 맛집 지도 웹

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published