Gelişmiş Komut Ekleme: Site İçeriklerinden Bilgi Çekme

Cenker Sisman tarafından tarihinde yayınlandı

Tanıdıklarınıza bu yazıyı önerin

Bu yazıda, yeni komut geliştirmek isteyen kullanıcılar için herhangi bir sitede ekranda yazan bir alanı CEYD-A ya nasıl tanıtıp söylettireceğimizi anlatacağım. Örnek olarak http://blog.cenker.com sitesinde bir konu sorgulatıp, CEYD-A nın bu siteden dönen yazıyı cevap olarak yazacağını farzedelim. Sonuç aşağıdaki gibi olacaktır:

Screenshot_2015-09-18-09-49-28.png görüntüleniyor

Peki sitede bir çok yazı varken sadece istediğimiz yazıyı nasıl alacağız. Önce mantığın nasıl işlediğine bakalım. Örnek site üzerinde arama yapmak için http://blog.cenker.com/?s=(ARANACAK TERİM) formatında bir sayfayı çağırmamız gerekiyor. Grip ile ilgili sonuçları aratacaksak sayfamız http://blog.cenker.com/?s=grip olmalı

Görüldüğü gibi sayfa grip ile ilgili bir sonuç döndürdü. Ama sayfa üzerinde bir çok yazı var biz cevap olarak “Yeni araştırmalara göre ” ile başlayan paragrafı almak istiyoruz. O zaman sayfanın koduna bir bakalım.

İstediğimiz alan <div class=”entry excerpt> tag i ile başlayan bölüm. Yani bu tag in içini almalıyız.
Bu sitedeki tüm aramalar için aynı tag in sonuç vereceğini düşünürsek aşağıdaki gibi bir komut tanımı yapmalıyız.

Peki, şimdi bu komut tanımı ne anlama geliyor onu açıklayalım:

Soru şablonu (.*) sitede araştır diyerek , sitede araştır sözünün önüne ekleyeceğimiz her terim bize $1 parametresi olarak dönecektir. Yani grip sitede araştır dediğimizde $1, grip olacaktır

Soru kelimeleri olarak  sitede araştır a 20 katsayısı veriyoruz ki katsayısı yüksek olsun. Daha önceki yazılarda belirttiğim gibi sistem komutları ile çakışmaması için katsayısı 15 ten yüksek olmalı yoksa CEYD-A, daha önceden bildiği başka bir komutu algılayabilir.

Cevap olarak CEYD ifadeleri kullandık. Buraya sabit düz bir metin de yazabilirdik hiç koda girmeden. O zaman bize her seferinde oraya ne yazdıysak cevap olarak onu söylerdi ama biz bu örneğimizde her soruya farklı ve yaptığımız işle ilgili doğru bir cevap vermesini istediğimizden kodla ifade edelim:

RET loadurlencode ifadesinin yanındaki parametre site URL sinin ismi, yani yukarda belirttiğim arama URL si. Dikkat ederseniz s=$1 yazılmış. $1 parametresi ne olarak geliyorsa url de ona göre değişecektir. Grip dediysek s=grip, rekor dediysek s=rekor . loadurlencode verilen URL nin içeriğini kodlar, SET ifadesi ise bu kodlanan içeriği bir değişkene atar. Örneğimizde bu değişken icerik . GET ifadesi değişkenin atanan içeriğini alır. decodefetchtag ifadesinin devamında ise virgül ile ayrılmış 2 parametre vardır. ilk parametre içerik, ikinci parametre ise bu html içeriğinin hangi tag inin geri dönüleceğidir. İkinci parametre regex ifadeleri de içerebildiğinden karışık sayfa yapılarında bile sonuç döndürmek mümkün olacaktır. Özetle decodefetchtag ifadesi kodlanan içeriği çözer ve içindeki istenen tag deki yazıyı geri döner.

Çok karmaşık görünse de bu yapı ile neredeyse tüm sitelerden bilgi çekip CEYD-A nın bu bilgiyi söylemesi mümkün olacaktır.


Cenker Sisman

1971 yılında doğan Cenker Sisman, Saint-Joseph lisesini bitirdi. Yıldız Teknik Üniversitesi’nde Bilgisayar Mühendisliği ve İstanbul Teknik Üniversitesi’nde aynı bölümün yüksek lisans eğitimlerini tamamladı. Savaş Köse ile beraber yazdığı ‘Parallel Implementation of The Hough Transformation’ çalışması SCI’99/ISAS’99 da yayınlandı. Yazdığı uzaktan bilgisayar kontrol uygulaması ‘Panda Future Connection’ Bimeks 1998 En İyi Yazılım – Mansiyon ödülünü aldı. Diğer programları olan WinPerfect, CleanDisk, VideoCapture, FTPExplorer, CardReader ve Multi-Email Sender uygulamaları zaman zaman yurtdışındaki medyalarda yayınlandı ve çeşitli otoriteler tarafından ödüller aldı.

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bu sayfa 262 kez ziyaret edilmiştir