[]
ekşisözlükten veri çekme?
şimdi ekşideki başlıkları sallıyorum 15 ya da 30 dakikada bir kontrol edeceğim ve içinde x kelime geçen başlıkları kendi yapacağım siteye çekmek istiyorum.
bunu nasıl yapabilirim? az çok kodlama bilgim var. hangi framework, dil ile kolay olur sizce?
bunu nasıl yapabilirim? az çok kodlama bilgim var. hangi framework, dil ile kolay olur sizce?
ekşisözlük - tatlısözlük diye ayırmadan, çok hızlı şekilde çoğu internet sitesinden nasıl veri çekersin onu anlatayım.
Node.js üzerine Express.js framework'ünü kur (defacto framework zaten Nodejs için). Bununla çok işin olmayacak.
HTTP Request için
github.com
Web Scraper (Eğer veri çekeceğin yer ajax ile dinamik veri yüklüyorsa cheerio işe yaramaz, o yüzden phantomjs kullanman gerekir, phantomjs ile çalışan bir scraper linki vereyim : github.com )
github.com
Async ("önce bunu yap, sonra şunu yap" ya da "bu üç işlemi aynı anda yap" gibi komutları verebilmen için)
github.com
Veritabanı için ORM (Çekeceğin veride çok ilişkisellik yoksa direk mysql driver ile de yapabilirsin)
github.com
15 dakikada bir scriptini çalıştıracak
github.com
Node.js http sunucunun sonsuza dek çalışmasını sağlamak için de pm2 kurarsın, eğer bir aksilik çıkar da durursa pm2 otomatik yeniden başlatır.
github.com
2-3 saatte öğrenirsin bunları. Async sayesinde paralel işlem yapabildiğin için veri çekme işi çok hızlı oluyor. Mesela PHP kullansan aynı anda tek bir url adresini ziyaret edebilecektin. Eğer 20 işlem istersen 20 ayrı php işlemi çalıştırman lazım, hem performanslı olmuyor. Bunda bir sefer yazıp istediğin hızda çalıştırabiliyorsun. İnternet hızına ve karşı tarafın cevap verme hızına göre ayarlayabiliyorsun.
Express.js http sunucuna bir limit vermezsen tüm istekleri aynı anda yollar, o yüzden http.globalAgent.maxSockets = 10 gibi bir limit koymak iyi olur, aynı anda 10 istek gider, karşı taraf isteklere cevap verirken "lan bi durun" olmaz.
Web scraping yasal açıdan gri bir alan, onu da belirteyim. Ekşisözlükten veri çekip bunu kendi sitende kullanman yasal olmaz :)
Node.js üzerine Express.js framework'ünü kur (defacto framework zaten Nodejs için). Bununla çok işin olmayacak.
HTTP Request için
github.com
Web Scraper (Eğer veri çekeceğin yer ajax ile dinamik veri yüklüyorsa cheerio işe yaramaz, o yüzden phantomjs kullanman gerekir, phantomjs ile çalışan bir scraper linki vereyim : github.com )
github.com
Async ("önce bunu yap, sonra şunu yap" ya da "bu üç işlemi aynı anda yap" gibi komutları verebilmen için)
github.com
Veritabanı için ORM (Çekeceğin veride çok ilişkisellik yoksa direk mysql driver ile de yapabilirsin)
github.com
15 dakikada bir scriptini çalıştıracak
github.com
Node.js http sunucunun sonsuza dek çalışmasını sağlamak için de pm2 kurarsın, eğer bir aksilik çıkar da durursa pm2 otomatik yeniden başlatır.
github.com
2-3 saatte öğrenirsin bunları. Async sayesinde paralel işlem yapabildiğin için veri çekme işi çok hızlı oluyor. Mesela PHP kullansan aynı anda tek bir url adresini ziyaret edebilecektin. Eğer 20 işlem istersen 20 ayrı php işlemi çalıştırman lazım, hem performanslı olmuyor. Bunda bir sefer yazıp istediğin hızda çalıştırabiliyorsun. İnternet hızına ve karşı tarafın cevap verme hızına göre ayarlayabiliyorsun.
Express.js http sunucuna bir limit vermezsen tüm istekleri aynı anda yollar, o yüzden http.globalAgent.maxSockets = 10 gibi bir limit koymak iyi olur, aynı anda 10 istek gider, karşı taraf isteklere cevap verirken "lan bi durun" olmaz.
Web scraping yasal açıdan gri bir alan, onu da belirteyim. Ekşisözlükten veri çekip bunu kendi sitende kullanman yasal olmaz :)
- hayirsiz (04.02.16 13:37:47 ~ 13:54:32)
1