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ı; Google’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. Google’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  Asp ile yapılmış şekillerine aşağıdaki linkten ulaşabilirsiniz.

spider_kod_anlat_5

GoogleBot - Asp (833)
VisualBasic Spider Kodlari (921)
This entry was posted in Asp, VisualBasic.Net and tagged , , , , , , . Bookmark the permalink.

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

  1. Ehocam says:

    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. Ahmet says:

    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. Ehocam says:

    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. murat karatay says:

    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. Ehocam says:

    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. murat karatay says:

    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. Ehocam says:

    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 😀

  8. Murat Karatay says:

    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. Ehocam says:

    Sağol muratcım. Sanada Kolay gelsin.

  10. Esra gizem says:

    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. Ehocam says:

    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. Esra Gizem says:

    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. mehmet köse says:

    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. Ehocam says:

    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.

  15. ertan says:

    Bence geçersiz değil hocam çok işime yaradı ve hala kullanmaktayım yazı için çok teşekkürler yalnız sizden bi ricam daha olacak bu yazıda html dökümanın koları alınıyor yani halihazırda bi adres olması gerekiyor ama bana javascriptten yönlendirilen sitenin yada sayfanın html taglarını alabilen kod lazım yani sayfanın yönlendirilmesi ile başlıyor ile bitiyor uzantı src olduğu için bi müdahalede bulunamadım yardımcı olursanız çok sevinirim bu arada yazmış olduğunuz yazı için tekrar teşekkürler sağlıcakla kalın…

  16. ertan says:

    yukarda yazdığım kodda scrip taglarını kaydetmemiş küçük büyük işaretlerini yazman tekrarlayayım dedim
    script language=”JavaScript” type=”text/javascript”
    ile başlıyor
    script language=”JavaScript” src=”ares.src” /script
    ile bitiyor

  17. Ehocam says:

    @Ertan;

    Buradaki mantık her tırnak işareti için fazladan bir tane koymak olacaktır. Örneğin “script” aratmak istediğinde “”script”” şeklinde aratman gerekiyor.

    Bu şekilde dener misin ? Ayrıca yorumların içinde çok teşekkürler. Yardımcı olabildiysem ne mutlu bana. 🙂

    a = “script language=””JavaScript”” type=””text/javascript”” >”
    b = “script language=””JavaScript”” src=””ares.src””> /script>”

  18. ertan says:

    ben bunu yapıyorum zaten bu sayede kendime oyun scripti hazırlıyorum 🙂 web sayfası daha doğrusu linki alacak içinden oyun adresini çekecek ve kendi yaptığım sitede yayınlayacak, aslında sistem basit neyse konumuz bu değil demek istediğim elimde hali hazırda bi adresyok “www.bilmemne.com?deneme=id&bilmemno=id” vs.vs. bu kodla bu ve bunun gibi adreslerin html kodlarına ulaşabiliyoruz ama ben saydafa yayınlanan reklamlar gibi yada belli başlı scriptler gibi sayfaya entegre edilen script language ile başlayıp /script ile bitten ve farklı bir adresten script çalıştıran “adresi” istiyorum bu sayede o adresdeki html komutlarına ulaşabilecem. Eğer bu kodlara ulaşırsam benim için çok büyük bi dönüm noktası olacak. yardımlarınız için şimdiden çok teşekkürler.

    Düzenlendi: Yorumlarınızı yazarken lütfen Türkçe karakterlerin kullanımına dikkat ediniz. Düzenlenmiştir. (05.11.2010)

  19. Ehocam says:

    @ertan;

    Demek istediğinizi anladım. Mantıklı kodlar kullandığınızda bunu yapabilirsiniz. Örneğin başlangıç ve bitiş etiketlerini doğru bir şekilde verebilirseniz zaten bunu başarmış olacaksınız. 😀 Maalesef bu anlamda size yardımcı olamam. Fakat yapılabileceğini kesinlikle söyleyebilirim. (Son projemde aynı sistemin benzerini kullandım.)

    İyi çalışmalar.

  20. ertan says:

    😀 o adrese bi ulaşabilsem başlangıç bitiş taglarını belirtecemde ulaşamıyorum 😀

Leave a Reply

Your email address will not be published. Required fields are marked *