Giter VIP home page Giter VIP logo

cimri-scraping's Introduction

Önemli

Bu proje acemi ve az bilgi sahibi olduğum zamanda yazılmıştır. Kodlarımı örnek almayınız :)

  • cimri.com'un web sitesi güncellendiği için proje'nin kodları düzgün çalışmayacaktır ve hata verecektir.(hiç çalıştırmadan incelemeniz daha iyi :) )
  • Resimlerdeki fiyatlar gerçek. Dolar 8.49 Tl bandındaydı

Kurulum

  1. NodeJS kurun: https://nodejs.org/en/download/
  2. Projeyi klonlayın.
  3. Veritabanına bağlanmak için “backend” klasörü içine .env dosyası oluşturun. Dokümantasyon
# .env key
ATLAS_URI=<mongodb access uri>
  1. Terminalden projeye “cimri-scraping” cd olun ve “npm install” komutunu kullanın.
  2. backend” kalasörüne cd olun ve “nodemon server” komunutu çalıştırın. Server api çalışacaktır.
  3. cimri-scrapping” cd olun ve “npm start” komutunu çalıştırın.
  4. Proje “http://localhost:3000” adresinde çalışmaya başlayacaktır. Tarayıcının url kısmına “http://localhost:3000” yazarak inceleyebilirsiniz.

Giriş

Javascript, Nodejs, React ve Redux kullanılarak geliştirilmiştir. Scraping için Axios Api ve Cheerio paketi kullanılmıştır. Ön yüz geliştirmesinde React ve Redux temelini oluşturmaktadır. Backend tarafında Nodejs ile api yazılmış ve Cors politikalarından sıyrılmıştır.

Projenin çalışma prensibi ön yüzden Axios Api kullanılarak server’a gönderilen isteklerin, server tarafında Cimri.com’a Scraping yapılarak verileri ön yüze iletmesinden oluşuyor. Cimri.com’da istenilen ürünün bilgileri HTML formatında alınarak Cheerio paketi ile istenilen formatta ayrıştırıldıktan sonra ön yüze gönderilmektedir.

Projede veri tabanı olarak MongoDB Atlas kullanılarak online bir sistemde proje derlendikten sonra tekrardan veritabanı kurulumu gerektirmemektedir.

  • Models klasörü altında bulunan dosyalar Mongoose kullanılarak MongoDB Atlas veritabanında kullanılmak üzere modellemeler yapıldı. Veritabanında üç faklı model JSON formatında saklanmaktadır. enter image description here

  • Veritabanında kullanıcıların kayıt oldukları mail ve şifreleri başta olmak üzere, kullanıcı bilgileri, favori ve fiyat takibine ekledikleri ürünler saklanmaktadır.

  • cimri.js: cimri.com üzerinde scraping yaparak ürün arama ve bazı sayfaları kazmaktadır.

  • productAlarm.js: Ön uçta kullanıcıların fiyat alarmına ekledikleri ürünlerden gelen request isteklerini cimri.com üzerinden sorgulayarak ürünün fiyatının durumunu response etmektedir.

  • userProducts.js: Kullanıcıların favoriye veya fiyat alarmına ekledikleri ürünleri veritabanına ekleme, silme, güncelleme ve bulmak için kullanılmaktadır.

  • Users.js: Kullanıcıların veritabanına üyelik kaydı, giriş, şifre değiştirme ve üyelik silme için kullanılmaktadır.

  • Usersinfo.js: Kullanıcıların veritabanında bilgilerini ekleme, değiştirme ve silmek için kullanılmaktadır.

  • cimriSearch.js: cimri.js routue’una gelen ürün arama isteklerini cimri.com’a iletilecek request url’ını düzenlemektedir.

  • priceSplit.js: productAlarm.js route’una gelen isteklerin fiyat bilgilerini istenilen forma dönüştürmek için kullanılmaktadır. Fiyat bilgisinden noktalama işaretlerini çıkartarak numerik bir forma sokarak ürünün fiyatını karşılaştırmaktadır.

  • Cimri.js: Scraping yapılan bu dosyada cheerio paketi kullanılarak, cimri.com üzerinden dönen html response’una html etiketlerinde bulunan class özelliklerine göre DOM ayrıştırması yapılarak sayfalar kazınmaktadır. Tüm scraping filtreleme, ayrıştırma ve response edilmek üzere hazırlanma işlemleri bu kısımda yapılmaktadır. Bu kısımda internet üzerinde bulunan tüm e-ticaret siteleri için fonksiyonlar eklenerek genişletilebilir ve bir çok siteden ürünler çekilebilir fakat bunun olumsuz yanı server maliyetini arttıracak olmasıdır.

Görseller

enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here

cimri-scraping's People

Contributors

klcahmet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.