Ehocam.Com
19Apr/0914

Google Sonuçlarını Almak (Spider Kod Yazımı)

Arkadaşlar bu yazıyı yazmak elbette çok zahmetli olacak. Başlarda acaba 2 veya 3 parça şeklinde mi yazsam diye düşündüm. Ama daha sonra tek bir yazıda (ki muhtemelen çok uzun bir yazı olacak) bu bilgileri paylaşmak istedim. Bu  yazım birçok kişinin para kazanmak amaçlı veya bilgileri çalıp kullandığı Spider kod yazma tekniğidir. Bazı arkadaşlar yazımı uzun bulabilirler. Fakat benim genel olarak çalıştığım yöntem bu şekildedir.

Peki Spider İle Neler Yapabiliriz ?

Büyük indirme sitelerinin veritabanlarını çalarak kendiniz bir arşiv oluşturabilirsiniz. (Örnek: www.frmdownload.com) Frmdownload.Com aslında benim uzun zamandır aklımda olan bir projeydi. Projenin amacı büyük indirme sitelerinin programlarını alıp, tek bir sitede kullanmaktı. Dersler, sınavlar derken siteyle uğraşamadım. Sadece inndir.com ve tamindir.com sitelerinin programlarını alabildim.

Sizinde tahmin ettiğiniz gibi verilerin arşivlenmesi için çok uzun bir zaman  ve zahmet gerekmektedir. Tüm verileri çekmek 2Mbit bağlantıda 2 gün sürdü. Toplamda bu iki siteden 6 gblık bilgi indirdim. Her bir sayfa 100Kb ile 800Kb olduğunu düşünürseniz binlerce sayfada dolaştığını anlayabiliyoruz. Burada, google'da ki sayfa sayısını görebilirsiniz.

Spider ile ;

  • Başka sitelerin sayfa bilgilerini alabilirsiniz.
  • Sitelerin genel çalışma algoritmasını çözerseniz, tüm siteyi istediğiniz gibi kullanabilirsiniz. (FrmDownload.Com gibi)
  • Winamp Shoutcast ile radyo bilgilerini alıp, sayfanıza entegre edebilirsiniz. (Sayfanızda Çalan Şarkı, Şarkı Uzunluğu, Önceki Şarkı gibi bilgileri gösterebilirsiniz)

Bunun gibi yaratıcılığa bağlı olarak örnekleri çoğaltmamız mümkündür.

Bu Yazının Amacı Ve Kazanımlar

Bu yazının amacı; 'da arama sonuçları sonrası çıkan verileri, alabilmek ve istediğimiz bir yerde kullanabilmek. Yazı sonunda bir web sayfasınından veri nasıl çekilir, çekilen verilerin içinden kodlar nasıl alınır ve bunları düzenli bir şekilde nasıl elde edebiliriz gibi konularda bilgi sahibi olacaksınız.

Çok uzattık artık kodlamaya gelelim.

spider_kod_1

Amacımız herhangi bir arama sonrasında (ehocam.com örnek amaçlı) çıkan sonuçları almak.

Yani ;
N tane sonucumuzdan

1. olanın başlığını, site linkini ve google'da çıkan kısa metnini,

2. olanın başlığını, site linkini ve google'da çıkan kısa metnini

...

N. olanın başlığını, site linkini ve google'da çıkan kısa metnini

elde edebilmek ;)

Ana fonksiyonlarımız 3 tanedir. Bu kodları nerden bulduğumu, düzenleyip düzenlemediğimi gerçekten hatırlamıyorum. Yazan arkadaşın ellerine sağlık.

  1. Fonksiyon fonkXmlHttp
    Bu fonksiyon xml yardımı ile istediğimiz sayfanın html kodlarını bize getirecek. Kullanımı fonkXmlHttp(siteurl)
    Dim TumVeri
    TumVeri = fonkXmlHttp("http://www.google.com.tr/search?hl=tr&q=Ehocam.Com")
    
  2. Fonksiyon fonkStream
    Bu fonksiyon ise, fonkXmlHttp ile aldığımız kodları, istediğimiz karakter formatına dönüştürüyor. Örneğin alınan verileri UTF8 şeklinde kullanmak isteyebiliriz.
  3. Fonksiyon fonkVeriCek
    En fazla kullanacağımız fonksiyon budur. Bu fonksiyon gelen html kodların içerisinde, seçilen blok aralıklarını bize veren fonksiyondur. Kullanımı

    fonkVeriCek(HtmlKodlar, BaşlamaEtiketi, BitişEtiketi)
    

Biraz kasma zamanı geldi. 'nin algoritmasını çözelim hemen.

Yapmamız gereken birinci kural amacımızı belirlemek olacaktır. (Saat sabahın 03:02 si. Bende ki fanteziye bak yahu :) )
Hemen C:InetpubwwwrootGoogle altına default.asp dosyamı oluşturuyorum.
Default.asp dosyamın en başına yukarıda bahsettiğim 3 adet fonksiyonumu ekliyorum. (Yeni dosyama buradan ulaşabilirsiniz. )
Blok aralıklarını belirlemeden önce, tüm veriyi bir değişkende toplayalım. Bunun için fonkXmlHttp fonksiyonumuzu kullanmamız lazım. Arama yapacağımız sözcük veya kelime aşağıda kırmızı kutucuktaki yere yazılacak.

spider_kod_anlat_1

<%
TumVeri = fonkXmlHttp("http://www.google.com.tr/search?hl=tr&q=Ehocam.Com")
%>

Yeni dosyamıza buradan ulaşabilirsiniz.

Elimizde şu an arama sonucunun html kodları bulunmaktadır. Burada almak istediğimiz değeri, genelden özele prensibinde olduğu gibi, en dıştan en içe doğru eleme yoluyla elde edeceğiz.

Almak İstediğimiz Bölüm

Almak İstediğimiz Bölüm

Almak İstediğimiz Bölümün HTML Kodları

Almak İstediğimiz Bölümün HTML Kodları

Gördüğünüz gibi çok karmaşık bir sistem ortaya çıkıyor. Keşke elimden gelsede nasıl bulduğumu aşama aşama anlatsam. Fakat o kudreti kendimde şu an göremiyorum. Projeyi özelleştirip ekran görüntüsünü ekliyorum. Projenin Vb.Net ve   ile yapılmış şekillerine aşağıdaki linkten ulaşabilirsiniz.

spider_kod_anlat_5

GoogleBot - Asp (162)
VisualBasic Spider Kodlari (162)
Comments (14) Trackbacks (0)
  1. HATA: Sonuçların hepsini yazı olarak düşündüğümden kodları ona göre ayarlamıştım. Fakat sonuçlarda video veya resim çıktığında kodlar çalışmıyor. Bu kodları lütfen domain sorgulaması yaparken uygulayın. Mesela ntvmsnbc.com gibi.

    NOT : Bu makaleyi Google sonuçlarını elde etmek gibi düşünmeyelim arkadaşlar. Böyle bir projeniz varsa Google Apilerini kullanabilirsiniz. Amaç kısmında “Yazı sonunda bir web sayfasınından veri nasıl çekilir, çekilen verilerin içinden kodlar nasıl alınır ve bunları düzenli bir şekilde nasıl elde edebiliriz gibi konularda bilgi sahibi olacaksınız.” bu bölüme dikkat edin.
  2. Hocam çok teşekkürler. Kodları uzun zamandır arıyordum. Bu arada bahsettiğiniz frmdownload sitesi açılmıyor. Keşke onu görseydik. Son olarak kodlar için gerçekten teşşekürler.

  3. Evet Ahmet site düştü. Zaten çoğu sunucu izinde vermedi. Çok fazla saldırı almaya başlamıştı. Onun yerinde http://www.e-indir.org sitesine taşıdım oradan bakabilirsin.

  4. slm hocam ben yazılm öğrenmek istiyorum veri tabanlı  ve bu bahsetdiniz veri konrtol eden yazılm kodlarının nasıl yazdığını ben bu konuda cok iyi yerlere gelmek istiyorum beni bu konuda neler nasıl çalışmaya başlmalıyım bana bu konuda bana   lütfenyardımcı olurmusunuz herşey için  şimdidenteşekkürler

  5. Eğer masaüstü yazılım ile ilgilenmek istiyorsan dat.net ortamını önerebilirim. .Net platformunda C tabanlı dilleri öneriyorum. Örneğin C# ile başlarsan bu işe; kafadan Javascript, Php, ActionScript gibi c tabanından gelen dilleri öğrenmiş olursun. Eğer Vb tabanlı yani microsoft ürünlerinden geliştirmeyi düşünüyorsanda önerim Vb.Net veya Vb olabilir.

    Bunlar için internet ortamında ki verileri kullanabilirsin. Veya kitapçılardan ilgili dilin kitaplarını seçip alabilirsin. İnternetten ayrıntılı bir şekilde araştırmanı öneririm kitaplar hakkında. Eğer yardımcı olabildiysem ne mutlu bana :)

  6. slm hocam ilgilendiniz için cok teşekürler ben baya bir araştıdım bana kızmazsanız bi sorumm  daha olacak ben veri lerin kontrolü için ağların ğüvenliği için  virüs ve anti virüsler hangi yazılım dili ile yazılır ve sanal saldılara karşı verileri korumak için hangi yazılım  kullanılır sadece bu yazılımların dilleriin  adını yazmanız yeterli olcaktır sizi meşkul ettiğim içimde şimdiden özürlilerim kolay gelsin hocam

  7. Rahatsızlık sözkonusu değil Murat. Herzaman sorularını beklerim.

    Arkadaşım dediğin ağ güvenliği ve benzeri programlara sınır getirerem. Şimdi sana şu şekilde açıklayayım kardeşim. Microsoft, Java’nın popülerliğinden sonra tüm platformlara hitap eden bir dil geliştirmeye karar verdi. Tüm platformlardaki ortak dili, şu an için Dat.net. Dat.Net’in en büyük avantajı hangi programlama dilini biliyorsan o dille imkansızlarını başarabilmen. Yani Dat.Net’te C# ile yapabileceğin tüm işleri Vb ile yapabiliyorsun. Veya Vb ile yapabildiğin herşeyi C++ veya diğer desteklediği diller ile aynısı başarabiliyorsun. Sonuç olarak işletim sisteminin alt yapısının da C’den geldiğini düşünürsek senin sorunun cevabı C# olabilir.

    Ama ağ güvenliği ve diğer söylediklerini genellikle nesne tabanlı birçok dilde yapabilirsin. Vb’de olabilir. java’da olabilir. Python’da olabilir.

    Sana üstte bunu yazmıştım. “Örneğin C# ile başlarsan bu işe; kafadan Javascript, Php, ActionScript gibi c tabanından gelen dilleri öğrenmiş olursun.”.

    Kardeşim sen C# öğren. Bundan 5 yıl sonra yatar kalkar dua edersin bana :D

  8. Anlaldım cok yi anladım cok teeşkkür edrim bu 5 yıl sürmeyecek ööğrenme ben size harbiden benim sorularıma cevap verdiniz  benimle ilgilendiniz ben size harbiden herzaman minnetdarım herzaman duacınızım cok cok teşekkür edrim buarda ben şimdiden C# öğrenmek mçin elimden geleni yapmaya başladım planlarımı yaptım  cok teşekkürler hocam RABBİM YAR VE YERDIMCINIZ OLSUN BY:

  9. Sağol muratcım. Sanada Kolay gelsin.

  10. Meraba hocam  yazlım  öğreniyorum amam HTLM biliyorum meslek lisesinde okuyorum ama ben en cok  bana diyeyim  Vürüs  Ve anti vürüs yazılımlar için  hangi yazılım dillerini önerirsiniz yada yukarda ben fazla anlamadım bunlar için sadece  c^öğrenmem yeterlimi kolay gelsin şimdiden teşekkürler

  11. Sınırlama getirmek yanlış olur. yani ben sana C öğrenmen hayatın için yeterli desem hata etmiş olurum. C öğrensen iyi olabilir diyebilirim ama. çünkü C tabanından gelen birçok dili öğrenmede zorluk çekmezsin. Örneğin html biliyorum demişsin. C öğrendiğin zaman  Web tabanlı bir etkileşimli öğrenmen (Php gibi) çok kısa bir zaman alır. Çünkü kullanılan yapısal programlama komutlarının çoğu benzer özellikte. (Döngüler, Mantıksal Sınamalar vs…) Seçeceğin dili iyi araştırman gerekiyor. sana en uygun dilin hangisi olduğunu, yapacağın projeler için seçeceğin dili belirlemen gerekiyor..

  12. Sayın  hocam teşekkür ederim baya dır araştırıyorum ama net bircevap buldum desen yalan olur ama size cok teşekkür edrim 

  13. ben de php ile bu tip birşey yazmaya uğraşıyorum bu ara, arama sonuçlarını çekebileceğim bir betik yazmam gerek.. 4-5 projem buna bağlı diyebilirim..

  14. Google arama sırasında altyapıyı değiştirdiğinden dolayı sistem çalışmayacaktır. Bu yazıda ki amacım bir sitenin içeriğini nasıl parçalayarak alabildiğimizi göstermekti ama yazı sonradan geçersiz oldu.


Leave a comment


No trackbacks yet.