
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.

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.

🚀 Ö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ı
- Bu projeyi klonlayın:
git clone https://github.com/Ynsemreaykr/Web-Scraping.git cd Web-Scraping - 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 backendklasörü altında.envdosyası 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- Flask backend uygulamasını başlatın:
python app.py - Tarayıcınızdan
frontend/index.htmldosyasını Live Server ile açabilir ya da doğrudan tarayıcıya sürükleyip yerel olarak çalıştırabilirsiniz. Uygulama otomatik olarakhttp://localhost:5000/apiportuyla 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.

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ı.
