Kocaeli Haber Haritası

Kocaeli Haber Haritası

Proje Kazanımları

Bu projede, Kocaeli yerel haber sitelerinden kentsel yaşamı etkileyen olayların (kaza, yangın, hırsızlık vb.) toplanıp anlamlandırılması amacıyla asenkron scraping, yapay zeka ile duplicate tespiti ve coğrafi görselleştirme içeren tam donanımlı bir sistem geliştirilmiştir.

  • Asenkron Web Scraping: Kocaeli genelindeki 5 farklı yerel haber sitesinin (Özgür Kocaeli, Çağdaş Kocaeli, Ses Kocaeli, Yeni Kocaeli ve Bizim Yaka) manşet ve detay sayfalarını BeautifulSoup4 ve requests kullanarak asenkron olarak kazıyan ve düzenli veri çeken bir pipeline oluşturdu.
  • NLP ile Yinelenen Haber Tespiti: Farklı sitelerde yayınlanan aynı haberleri Sentence Transformers modelini kullanarak kosinüs benzerliği analiziyle tek bir harita pininde birleştirdi.
  • Google Maps & Geocoding Entegrasyonu: Haber metinlerinden cadde, sokak ve ilçe isimlerini regex/NLP ile çıkararak koordinatlara dönüştürdü ve haritada konumlandırdı.
  • Flask ve MongoDB Mimarisi: Çekilen tüm verileri MongoDB'de index'lenmiş yapıda saklayarak Flask REST API üzerinden hızlı filtreleme ve veri akışı sağladı.
README.md Dosyasını Görüntüle

title: Kocaeli Haber Haritasi emoji: 🗺️ colorFrom: blue colorTo: indigo sdk: docker app_port: 7860 pinned: false

🗺️ Kocaeli Haber Haritası

Web Scraping & NLP Tabanlı Kentsel Haber İzleme ve Görselleştirme Sistemi

Bu proje; Kocaeli genelinde yayın yapan yerel gazete ve haber kaynaklarından (Çağdaş Kocaeli, Özgür Kocaeli, Ses Kocaeli, Yeni Kocaeli ve Bizim Yaka) kentsel yaşamı doğrudan etkileyen olayları (Trafik kazaları, yangınlar, elektrik kesintileri, hırsızlık, suç/cinayet vakaları ve kültürel etkinlikler) anlık olarak toplayan, sınıflandıran, konumlarını tespit eden ve harita üzerinde interaktif olarak görselleştiren bir uçtan uca sistemdir.

🚀 Canlı Demo

Uygulamanın globale taşınmış halini canlı olarak denemek için Hugging Face Space adresini ziyaret edebilirsiniz:
👉 ynsemreaykr-web-scraping.hf.space


📸 Ekran Görüntüleri

1. Genel Arayüz ve Filtreleme Seçenekleri

Sistem; koyu tema (dark mode) tasarımı, esnek filtreleme paneli ve etkileşimli Google Haritası ile kullanıcılara gelişmiş bir takip deneyimi sunar. Kocaeli Haber Haritası Arayüzü

2. Haber Detay Penceresi ve Çoklu Kaynak Desteği

Harita üzerindeki bir pine tıklandığında habere ait başlık, tarih, özet bilgi, haritada gösterilen konum ve haberin yayınlandığı tüm kaynakların (varsa benzer kopya haberlerin birleştirilmiş hali) bağlantıları listelenir. Haber Detay Penceresi


🚀 Öne Çıkan Özellikler

  • Çoklu Kaynak Web Scraping: Belirlenen yerel haber sitelerinden asenkron ve site kurallarına (request delay) uyumlu şekilde veri çekimi gerçekleştirilir.
  • NLP Tabanlı Yinelenen Haber Tespiti (Deduplication): Farklı ajansların veya gazetelerin aynı konudaki haberleri, sentence-transformers (paraphrase-multilingual-MiniLM-L12-v2) modeliyle vektörleştirilir ve kosinüs benzerliği (cosine similarity) hesaplanarak tek bir harita pininde birleştirilir.
  • Akıllı Özetleme (Extractive Summarization): Uzun haber metinleri, başlık ile içerik cümlelerinin benzerlik analizlerine göre en kritik 2-3 cümleye sıkıştırılarak otomatik özetlenir.
  • Konum Çıkarımı ve Geocoding: Haber metinlerinde geçen cadde, sokak, mahalle ve ilçe adları regex ve NLP yöntemleriyle taranır, Google Geocoding API kullanılarak koordinatlara dönüştürülür.
  • Zengin Arayüz Filtreleri: Haber türü, ilçe, tarih aralığı, sadece haritalandırılmış olanlar veya birden fazla haber sitesinde yayımlanmış ortak haberler (çoklu kaynak) kolayca filtrelenebilir.

🛠️ Teknoloji Yığını

  • Frontend: Vanilla HTML5, CSS3 (Glassmorphism & Flexbox/Grid), Modern Javascript (ES6), Google Maps API
  • Backend: Python 3.10, Flask (REST API), Flask-CORS
  • Veritabanı: MongoDB (Yerel MongoDB veya MongoDB Atlas Cloud)
  • Yapay Zeka & NLP: Sentence Transformers (Hugging Face), Scikit-Learn, NumPy, BeautifulSoup4 (Scraping)

📦 Yerel Kurulum ve Çalıştırma

1. Gereksinimler

  • Python 3.10+
  • MongoDB Server (çalışır durumda)
  • Google Maps & Geocoding API Key

2. Kurulum Adımları

  1. Bu projeyi klonlayın:
    git clone https://github.com/Ynsemreaykr/Web-Scraping.git
    cd Web-Scraping
    
  2. Backend dizininde bir sanal ortam oluşturun ve bağımlılıkları yükleyin:
    cd backend
    python -m venv venv
    source venv/Scripts/activate  # Windows için: venv\Scripts\activate
    pip install -r requirements.txt
    
  3. backend klasörü altında .env dosyası oluşturup aşağıdaki değişkenleri tanımlayın:
    MONGODB_URI=mongodb://localhost:27017/
    MONGODB_DB_NAME=kocaeli_haberler
    GOOGLE_API_KEY=YOUR_GOOGLE_MAPS_API_KEY
    
  4. Flask backend uygulamasını başlatın:
    python app.py
    
  5. Tarayıcınızdan frontend/index.html dosyasını Live Server ile açabilir ya da doğrudan tarayıcıya sürükleyip yerel olarak çalıştırabilirsiniz. Uygulama otomatik olarak http://localhost:5000/api portuyla haberleşecektir.

[!IMPORTANT]
Haberlerin Çekilmesi: Uygulama ilk kez açıldığında veritabanı boş olacaktır. Haritayı doldurmak ve güncel haberleri çekmek için sağ üst köşede bulunan "Haberleri Güncelle" butonuna basarak ilk kazıma (scraping) işlemini tetiklemeniz gerekmektedir. Bu işlem 5 yerel gazeteyi asenkron olarak tarayarak haberleri harita üzerine yerleştirecektir.

Görseller & Detaylar

Genel Arayüz ve Harita Görünümü

Kategori filtreleri, ilçe seçimi, tarih aralığı filtreleme paneli and interaktif Google Haritalar entegrasyonu.

/projects/web_scraping/kocaeli_haber.jpg

Haber Detay Penceresi

Harita üzerindeki pine tıklandığında açılan, habere ait özet, tarih, kategori ve birleştirilmiş çoklu kaynak bağlantılarını içeren bilgi kartı.

/projects/web_scraping/detail.png