Web yayinlanan bir veritabanini excel ile elde etmek

Katılım
7 Nisan 2007
Mesajlar
3
Excel Vers. ve Dili
Excel 2007 English
http://cricos.deewr.gov.au/Course/CourseSearch.aspx adresine girildiginde 6 farkli arama kriteri ile veri tabanindan donus yaptiran bir sorgulama menusu var. Web safyasinda New South Wales de 02-Information Technology alaninda Masters Degree(Coursework) ile ilgili olan okullari bul dedigimde bana bir sonuc donduruyor. Gelen okullardan herhangi birini sectigimde de bana o okul ile ilgili bilgileri veren sayfayi aciyor. Gelen sayfada okulun cesitli bilgileri var. Yine ayni sayfada ama yanindaki sekmede de okulun iletisim vs. gibi diger bilgileri var. (mesela bu sayfada http://cricos.deewr.gov.au/Course/CourseDetails.aspx?CourseID=52984
Excelde makro ile webden bilgi alma ozelligini kullanarak bu sitelerdeki bilgilere ulastigimi dusunsem bile (yukaridaki web adresini ve arama kombinasyonlarinin cevirdigi websayfasi adreslerini elle teker teker girsem bile) ayni sayfada ama farkli sekmede olan bilgileri webquery ile secemiyorum.

Bu konuda yardimci olabilecek olan var mi ?

Benim amacim okullarin bu bilgileri uzerinden gereginde arama yapabilmek. Dusunuyorum ki eger bu okul bilgileri(veritabani) bende excelde kayitli olursa ben istedigim sekilde mesela fiyatlari uzerinden de bu veritabanindan arama yapabilirim.

Uzerinde calistigim model dosyayi da ekliyorum.
Yardimlariniz icin simdiden tesekkur ederim.
 

Ekli dosyalar

Katılım
17 Aralık 2007
Mesajlar
28
Excel Vers. ve Dili
2002 (10.4302.4219) SP-2
Merhaba,

Web'den herhangi bir sayfayı Excel'e transfer edebilmeniz için elinizde "valid url" olması gerekir; diğer bir deyişle Excel'e doğrudan bir html, html, asp, aspx, php,.. vb. türevi bir sayfa göstermelisiniz ki, onu browser gibi render edip tabloları bulsun. Ancak belirttiğiniz sayfalardaki webTab'ler javascript.. Yani aynı sayfa içinde tamamen browser render ile oluşturulan ve array mantığı ile yönetilen ayrı bir yapı.

Şöyle özetleyeyim: Sonuçta hangi dil ile yazılırsa yazılsın, browser o sayfayı alıp render ediyor ve bize gösteriyor. Bu sayfa aspx de olsa (dinamik sayfa) browser ekranına geldiği anda aslında statik sayfaya dönüşüyor. Daha da açıklayıcı olmak gerekirse, http://cricos.deewr.gov.au/Course/CourseDetails.aspx?CourseID=61294 adresinde "CourseDetails.aspx" sayfası tamamen verilerin nasıl gösterileceğini, neyin nereye konacağını gösteren bir şablondur. "CourseID=61294" ile gösterilen kısım ise, çok kabaca 61294. record'un verilerini göster anlamındadır. Bizler browser ekranında herşeyi bir bütün gibi görebiliriz, ancak o görünen yapı alında parçalı (ayrı ayrı sayfalardan oluşan bir yapı) olabileceği gibi, bu örnekteki gibi görüntülenme sırasında oluşturulan yapı da olabilir.

Yalnız, yapı her ne şekilde olursa olsun sonuçta o sayfayı browser ekranında tek bir sayfaymış gibi gördüğümüze göre, sayfanın boş herhangi bir yerine sağ mouse ile tıklayıp "kaynağı göster - view source" seçtiğimizde, aslında biz sayfayı çağırdığımızda browser tarafından render edilmiş ve artık statik sayfaya dönüşmüş HTML kodu görebiliriz. :)

Bu noktada geriye bir tek işlem kalıyor. Tab duraklarına tıkladığımda browser'ın adres çubuğundaki url değişmiyorsa (ki burada değişmiyor, değişseydi o adresi webquery'de Excel'e yazar, sayfayı alırdım zaten), o zaman her bir tab'deki almak istediğim kısmı bulur, araya bir makro yazıp doğrudan almaya çalışırdım. Şöyle örnekleyelim:

http://cricos.deewr.gov.au/Course/CourseDetails.aspx?CourseID=61294 adresinde 2. tab'de "CRICOS Provider Code:" kısmı var. Sayfanın koduna geçtiğimde (sağ klik, kaynağı göster - view source) ve o koddan "CRICOS Provider Code:" arattığımda aşağıdaki kod kısmını buluyorum;
<TR>
<TD vAlign="top" width="30%"><B>CRICOS Provider Code:</B></TD>
<TD vAlign="top" width="70%"><span id="ctl00_cphDefaultPage_institutionDetail_lblProviderCode">00098G</span></TD>
</TR>


Sanırım şimdi daha anlaşılır oldu. "CRICOS Provider Code:" için, bir "span id" tanımı var. O halde ben "<span id="ctl00_cphDefaultPage_institutionDetail_lblProviderCode">00098G</span>" string'ini bu url'in kodunda aratırsam (ki 1 tane var zaten) ve bu string'den iki "span" tag'inin arasındaki "00098G" kısmını ayırırsam, istediğim bilgiye ulaşmış olurum. :) Başka bir CourseID için de arama yaptırsam, yine aynı alana bakacağım ama bu sefer başka bir provider code'u bana verecek.. :)

Aslında Excel'in çalışma mantığı da bu şekilde işliyor. webquery'e bir url yazıp getirdiğinizde, excel'de html'de standart olarak bulunan "<table>" tag'ine bakıyor.

Zahmetli gibi görünebilir; ancak bu yöntemle verileri çekmeniz daha kolay olur.


Kolay gelsin, iyi çalışmalar..
 
Üst