Ehocam.Com
19Apr/0920

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 (247)
VisualBasic Spider Kodlari (235)


Comments (20) 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.

  15. 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. 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. @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. 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. @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. :D 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. :D o adrese bi ulaşabilsem başlangıç bitiş taglarını belirtecemde ulaşamıyorum :D


Leave a comment


No trackbacks yet.