Aplikasi komprehensif untuk pengumpulan, analisis, dan klasifikasi berita dari sumber-sumber Gorontalo menggunakan Streamlit. Mendukung scraping web, ekstraksi PDF dengan AI, dan klasifikasi BPS otomatis.
- 8 Media Gorontalo: GOSULUT.ID, Gorontalo Post, Habari.id, Rakyat Gorontalo, GoPOS.id, Antara News, Berita Pemda Gorontalo, CoolTurnesia
- Database Integration: Pencarian artikel dari database MySQL
- Filter Canggih: Tanggal, keyword, sumber berita
- AI-Powered Extraction: Ekstraksi artikel dari PDF koran menggunakan Azure OpenAI
- Multi-page Support: Deteksi artikel yang bersambung antar halaman
- BPS Auto-classification: Klasifikasi kategori BPS otomatis untuk setiap artikel
- Source Detection: Identifikasi sumber koran dari header PDF
- BPS Category Analysis: Distribusi artikel berdasarkan kategori BPS (A1, B, C1, dll.)
- Interactive Charts: Visualisasi data dengan Altair
- File Summary: Ringkasan per-file PDF dengan statistik lengkap
- Export Capabilities: Download dalam format CSV
- BPS Classification: Otomatis klasifikasi artikel ke kategori BPS KBLI
- Duplicate Handling: Sistem pencegahan duplikasi artikel
- Responsive UI: Interface yang adaptif untuk desktop dan mobile
git clone <repository-url>
cd news_scraper_bps_modificationpip install -r requirements.txtDirekomendasikan: Gunakan environment variables untuk konfigurasi aman:
# Database Configuration
export DB_HOST="your_mysql_host"
export DB_USER="your_username"
export DB_PASSWORD="your_secure_password"
export DB_NAME="news_database"
# Azure OpenAI (untuk PDF processing)
export AZURE_OPENAI_ENDPOINT="https://your-endpoint.openai.azure.com/"
export AZURE_OPENAI_API_KEY="your_api_key"
export AZURE_OPENAI_API_VERSION="2024-12-01-preview"
export AZURE_OPENAI_DEPLOYMENT_NAME="gpt-4o"Jalankan scraper untuk auto-create database dan tabel:
python scraper.pyAtau setup manual:
-- Database akan otomatis dibuat saat pertama kali menjalankan scraper
-- Tabel news_articles akan dibuat dengan kolom BPS otomatisstreamlit run app_streamlit.py- streamlit: Web framework dan UI
- pandas: Data manipulation dan analysis
- pymysql: MySQL database connector
- altair: Data visualization
- requests: HTTP client untuk scraping
- beautifulsoup4: HTML parsing
- langchain: AI-powered text processing framework
- langchain-community: Community integrations
- langchain-openai: Azure OpenAI integration
- pydantic: Data validation dan models
- PyMuPDF: PDF text extraction
- python-dotenv: Environment variables
Aplikasi menggunakan MySQL dengan tabel news_articles:
CREATE TABLE news_articles (
id INT AUTO_INCREMENT PRIMARY KEY,
date DATE,
title TEXT,
contents LONGTEXT,
reporter VARCHAR(255),
sources VARCHAR(255),
links TEXT,
impact TEXT,
sector VARCHAR(255),
sentiment VARCHAR(50),
kategori_bps VARCHAR(10), -- Kategori BPS (A1, B, C1, dll.)
kategori_bps_detail TEXT, -- Deskripsi lengkap kategori BPS
UNIQUE KEY unique_title (title(255))
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Kolom BPS akan ditambahkan otomatis saat pertama kali menjalankan scraper.
# Required
DB_HOST=your_mysql_server
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=news_database
# Optional (untuk PDF processing)
AZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com/
AZURE_OPENAI_API_KEY=your_api_key
AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4o- Cek Status Database: Lihat status koneksi di header aplikasi
- Jika Database Online: Pilih filter tanggal/keyword/sumber, klik "Search Articles"
- Filter BPS: Gunakan dropdown untuk filter berdasarkan kategori BPS
- Upload Files: Upload satu atau multiple file PDF koran
- AI Extraction: Sistem akan mengekstrak artikel menggunakan Azure OpenAI
- BPS Classification: Artikel otomatis diklasifikasi ke kategori BPS
- Review Results: Lihat summary per-file dan artikel yang diekstrak
- Export Data: Download hasil dalam format CSV
- BPS Category Distribution: Lihat distribusi artikel per kategori BPS
- File Summaries: Ringkasan lengkap untuk setiap file PDF
- Interactive Charts: Visualisasi data dengan filter dinamis
- Article Details: Lihat konten lengkap dan klasifikasi BPS
- Dual Mode: Aplikasi mendukung web scraping dan PDF extraction
- BPS Classification: Semua artikel otomatis diklasifikasi ke kategori BPS
- Security: Gunakan environment variables untuk konfigurasi sensitif
- Azure OpenAI: Diperlukan untuk fitur PDF extraction dengan AI
# Test koneksi database
python test_mysql_connection.py
# Setup ulang schema database
python scraper.py # Akan membuat tabel dan kolom BPS otomatis# Install dependencies PDF
pip install langchain langchain-community langchain-text-splitters langchain-openai pydantic PyMuPDF python-dotenv
# Setup environment variables Azure OpenAI
export AZURE_OPENAI_ENDPOINT="https://your-endpoint.openai.azure.com/"
export AZURE_OPENAI_API_KEY="your_api_key"# Test koneksi ke media
python -c "import requests; print(requests.get('https://gosulut.id').status_code)"
# Jalankan scraper manual
python scraper.py- Database connection failed: Periksa credentials dan network connectivity
- PDF extraction disabled: Install dependencies dan setup Azure OpenAI
- Module not found: Install ulang dari requirements.txt
- Scraping failed: Periksa koneksi internet dan struktur website
news_scraper_bps_modification/
βββ app_streamlit.py # Main Streamlit application
βββ scraper.py # Main scraping orchestrator
βββ langchain_extract.py # AI-powered PDF extraction
βββ requirements.txt # Python dependencies
βββ config.ini.example # Configuration template
βββ README.md # Documentation
βββ category.txt # Scraper URL configurations
βββ runtime.txt # Scraping schedule
βββ clean_dup.py # Database cleanup utility
βββ test_mysql_connection.py # Database connection test
βββ scraper_*.py # Individual media scrapers
βββ __pycache__/ # Python cache (auto-generated)
βββ .venv/ # Virtual environment (optional)
- Fork repository
- Create feature branch
- Commit changes
- Push to branch
- Create Pull Request
This project is licensed under the MIT License.
Badan Pusat Statistik Provinsi Gorontalo ποΈ