Skip to content

DIYEPH/foody-crawl-project

Repository files navigation

Dự án Foody Crawl

Dự án thu thập và quản lý dữ liệu từ Foody.vn, tập trung vào các danh mục giải trí như Karaoke, Billiards, Rạp chiếu phim, Sân khấu và Khu chơi Game tại các thành phố của Việt Nam.

Tổng quan hệ thống

Dự án được thiết kế theo kiến trúc microservices, bao gồm các thành phần sau:

Đóng vai trò là cổng kết nối cho toàn bộ hệ thống, quản lý và điều hướng các yêu cầu API từ người dùng đến các dịch vụ nội bộ tương ứng.

Chức năng chính:

  • Điều hướng các yêu cầu API đến đúng dịch vụ nội bộ
  • Cung cấp một điểm truy cập thống nhất cho toàn bộ hệ thống
  • Đơn giản hóa việc truy cập cho người dùng và các dịch vụ khác

Thu thập dữ liệu từ trang web Foody.vn theo lịch trình hoặc theo yêu cầu.

Chức năng chính:

  • Thu thập dữ liệu tự động theo lịch trình hàng ngày
  • Thu thập dữ liệu theo yêu cầu người dùng
  • Theo dõi trạng thái thu thập dữ liệu qua WebSocket
  • Tạm dừng, tiếp tục hoặc dừng quá trình thu thập

Thu thập và xử lý dữ liệu từ các file JSON được tạo ra bởi hệ thống crawler, sau đó gửi dữ liệu đã xử lý đến API cơ sở dữ liệu.

Chức năng chính:

  • Kiểm tra và xử lý các file .done trong thư mục landing zone
  • Trích xuất dữ liệu cửa hàng từ các file JSON tương ứng
  • Chuyển đổi dữ liệu thành định dạng phù hợp
  • Gửi dữ liệu đến API cơ sở dữ liệu
  • Đánh dấu các file đã xử lý bằng cách đổi tên từ .done thành .processed

Cung cấp API để truy xuất, thêm, tìm kiếm và quản lý dữ liệu cửa hàng (store), thành phố (city), danh mục (category).

Chức năng chính:

  • Cung cấp các endpoint RESTful để truy vấn dữ liệu
  • Kết nối trực tiếp với cơ sở dữ liệu MySQL
  • Xử lý yêu cầu từ các dịch vụ khác và frontend

Quản lý cơ sở dữ liệu MySQL cho toàn bộ hệ thống.

Chức năng chính:

  • Khởi tạo và cấu hình cơ sở dữ liệu
  • Tạo các bảng và quan hệ cần thiết
  • Lưu trữ dữ liệu cửa hàng, thành phố, danh mục

Cung cấp giao diện người dùng để tương tác với hệ thống.

Chức năng chính:

  • Hiển thị dữ liệu cửa hàng, thành phố, danh mục
  • Cho phép người dùng tìm kiếm và lọc dữ liệu
  • Cung cấp giao diện để quản lý quá trình thu thập dữ liệu

Luồng dữ liệu

  1. Thu thập dữ liệu: Dịch vụ Thu thập dữ liệu crawl dữ liệu từ Foody.vn và lưu vào thư mục landing_zone.
  2. Xử lý dữ liệu: Dịch vụ Nhập dữ liệu đọc các file trong landing_zone và gửi dữ liệu đã xử lý đến Database API.
  3. Lưu trữ dữ liệu: Database API lưu dữ liệu vào cơ sở dữ liệu MySQL.
  4. Truy vấn dữ liệu: Frontend và các dịch vụ khác truy vấn dữ liệu thông qua Database API.

Cài đặt và chạy

Yêu cầu hệ thống

  • Docker và Docker Compose
  • Git

Các bước cài đặt

  1. Clone repository:
git clone https://github.com/your-username/foody-crawl-project.git
cd foody-crawl-project
  1. Khởi động toàn bộ hệ thống:
docker-compose up -d
  1. Truy cập các dịch vụ:

Cấu trúc thư mục

foody-crawl-project/
├── gateway/                # Dịch vụ Gateway
├── data_crawling_service/  # Dịch vụ Thu thập dữ liệu
├── data_ingestion_service/ # Dịch vụ Nhập dữ liệu
├── database_api_service/   # Dịch vụ API Cơ sở dữ liệu
├── database_service/       # Dịch vụ Cơ sở dữ liệu
├── frontend_service/       # Dịch vụ Giao diện người dùng
├── landing_zone/           # Thư mục lưu trữ dữ liệu tạm thời
└── docker-compose.yml      # Cấu hình Docker Compose

Đóng góp

  1. Fork repository
  2. Tạo branch mới (git checkout -b feature/amazing-feature)
  3. Commit thay đổi (git commit -m 'Add some amazing feature')
  4. Push lên branch (git push origin feature/amazing-feature)
  5. Tạo Pull Request

Giấy phép

Dự án này chỉ để phục vụ nghiên cứu và học tập, không hề có bất cứ ý đồ gây tổn hại nào cho Foody

About

Foody auto login and crawl

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors