ASPX sayfasındaki verileri alma

Delphi .net ve .net ile ilgili konuları buraya yazabilirsiniz.
Cevapla
barissagir
Üye
Mesajlar: 5
Kayıt: 17 Haz 2014 03:39

ASPX sayfasındaki verileri alma

Mesaj gönderen barissagir » 03 Mar 2015 09:34

Selamün Aleyküm,

http://izinlisans.cevre.gov.tr/Sorgular ... rgula.aspx
sitesinde il kısmına "Konya" yazdırdıktan sonra Filtrele butonuna tıklamak ve
akabainde açılan ReportView deki verileri "Select a format" comboboxından
Excel i seçip Export tuşuna başarak C:\Bilgi klasörüne kayıt ettirmem gerekiyor..

şimdiden yardım edenlere teşekkür ederim.

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4715
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: ASPX sayfasındaki verileri alma

Mesaj gönderen mrmarman » 03 Mar 2015 08:27

Özel mesaja gerek yoktu ama arkadaşınızın C#'da kolay deyip Delphi'de zor demesinin sebebini bilemiyorum. İkisinde de aynı şekilde düşündüm.
Deneyip gördüm Delphide de oldukça basit bir işlem.
Size şöyle ipucu verebilirim.

http://izinlisans.cevre.gov.tr/Sorgular ... rgula.aspx
linki için Aşağıdaki kısım klasik browse et ComboBox seç işlemidir.

Kod: Tümünü seç

USES MSHTML;

Var
  xIslemTamam : Boolean;

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  HTMLDocument : IHTMLDocument3;
  HTMLElement  : IHTMLSelectElement;
begin
  WebBrowser1.Silent := True;
  WebBrowser1.Navigate('http://izinlisans.cevre.gov.tr/Sorgular/YazilimNetIzinLisansSorgula.aspx');
  while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
  begin
    Sleep(1);
    Application.ProcessMessages;
  end;

  if Supports(WebBrowser1.Document, IID_IHTMLDocument3, HTMLDocument) then
  begin
    if Supports(HTMLDocument.getElementById('ddlIller'), IID_IHTMLSelectElement, HTMLElement) then
    begin
      HTMLElement.selectedIndex := 42;
      xIslemTamam := False;
      WebBrowser1.OleObject.Document.GetElementByID('btnFilter').Click;
      while NOT xIslemTamam do
      begin
        sleep(1);
        Application.ProcessMessages;
      end;
    end;
  end;
end;
Bu işlem sırasında OnDocumentComplete eventine aşağıdaki sıra ile 12 adımlı süreç işliyor.

Kod: Tümünü seç

01.javascript:''
02.http://izinlisans.cevre.gov.tr/Sorgular/YazilimNetIzinLisansSorgula.aspx
03.http://izinlisans.cevre.gov.tr/Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=433063b4a86a45afb95548421e9ce81c&ControlID=3b64ba7a4fac45c88d53745903bf7486&Culture=1055&UICulture=1055&ReportStack=1&OpType=SessionKeepAlive&TimerMethod=KeepAliveMethodReportViewer1TouchSession0&CacheSeed=Tue%20Mar%2003%2019%3A46%3A41%202015
04.javascript:''
05.javascript:''
06.javascript:''
07.http://izinlisans.cevre.gov.tr/Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=745178ca9b2b4309bb674d20e5bd7c77&ControlID=3b64ba7a4fac45c88d53745903bf7486&Culture=1055&UICulture=1055&ReportStack=1&OpType=SessionKeepAlive&TimerMethod=KeepAliveMethodReportViewer1TouchSession0&CacheSeed=Tue%20Mar%2003%2019%3A46%3A56%202015
08.javascript:''
09.javascript:''
10.http://izinlisans.cevre.gov.tr/Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=a85d407a3d444e7daf8c9f92f8f941ae&ControlID=3b64ba7a4fac45c88d53745903bf7486&Culture=1055&UICulture=1055&ReportStack=1&OpType=ReportArea&Controller=ReportViewer1&PageNumber=1&ZoomMode=Percent&ZoomPct=100&ReloadDocMap=true&SearchStartPage=0&LinkTarget=blank
11.http://izinlisans.cevre.gov.tr/Reserved.ReportViewerWebControl.axd?OpType=DocMapReport&ClientController=ReportViewer1&ReportUrl=%2fReserved.ReportViewerWebControl.axd%3fMode%3dtrue%26ReportID%3da85d407a3d444e7daf8c9f92f8f941ae%26ControlID%3d3b64ba7a4fac45c88d53745903bf7486%26Culture%3d1055%26UICulture%3d1055%26ReportStack%3d1%26OpType%3dReportArea%26Controller%3dReportViewer1%26PageNumber%3d1%26ZoomMode%3dPercent%26ZoomPct%3d100%26ReloadDocMap%3dtrue%26SearchStartPage%3d0%26LinkTarget%3dblank
12.http://izinlisans.cevre.gov.tr/Sorgular/YazilimNetIzinLisansSorgula.aspx
Buradaki adımlarda elde edilen linkler ile aşağıdaki şekilde bir işlem ile ikinci bir WEBBrowser2 ekranına aktarım yapabilirsiniz. Gerisi basit parse işlemidir.

Kod: Tümünü seç

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
Var
  strGelen : String;
begin
  if URL = 'http://izinlisans.cevre.gov.tr/Sorgular/YazilimNetIzinLisansSorgula.aspx'
    then xIslemTamam := True;

  if pos('LinkTarget=blank', URL ) > 0 then
  begin
    WebBrowser2.Silent := True;
    WebBrowser2.Navigate(URL);
    while WebBrowser2.ReadyState <> READYSTATE_COMPLETE do
    begin
      Sleep(1);
      Application.ProcessMessages;
    end;
  end;
end;
Resim
Resim Resim

barissagir
Üye
Mesajlar: 5
Kayıt: 17 Haz 2014 03:39

Re: ASPX sayfasındaki verileri alma

Mesaj gönderen barissagir » 04 Mar 2015 10:53

Hocam çok teşekkür ederim.
Yardımseverliğiniz takdire şayan. :bravo:
Programı denedim sorunsuz çalışıyor.
Fakat acemi bir kullanıcı olduğum için tam olarak beceremedim.
WebBrowser2 de elde ettiğimiz sayfayı c:\Bilgiler klasörüne excel olarak almam lazım.

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4715
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: ASPX sayfasındaki verileri alma

Mesaj gönderen mrmarman » 04 Mar 2015 11:48

Üzgünüm zaten gereğinden fazla kod yazdım. Biraz çabalarsan başarırsın. Acemilik bu şekilde hazır çözümlerle aşılamaz anlıyorsundur beni.
Resim Resim

barissagir
Üye
Mesajlar: 5
Kayıt: 17 Haz 2014 03:39

Re: ASPX sayfasındaki verileri alma

Mesaj gönderen barissagir » 04 Mar 2015 02:06

Doğru söylüyorsunuz, ama sabahtan beri internette aratıyorum bu parse olayı nedir diye
bulduğum bir kaç çözümde de html dosyasından almayı gösteriyor.
ama benimkisi webbrowser da. Oradan nasıl çekeceğiz bilemedim.
Programcı değilim hobi olarak uğraşıyorum.
Verdiğiniz bilgilerden hiç bir şey anlamadım doğrusu :) yani hep veri tabanı ile alakalı şeyler yazdığım için
bu kodlar çok yabancı bana.
Tekrar rica ediyorum. daha fazla yardım etmezseniz bu soru benim için çözümsüz kalacak.
Yine de ilginiz için çok teşekkür ederim.

Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1286
Kayıt: 07 May 2009 09:42
Konum: İstanbul
İletişim:

Re: ASPX sayfasındaki verileri alma

Mesaj gönderen SimaWB » 04 Mar 2015 03:21

barissagir yazdı:bulduğum bir kaç çözümde de html dosyasından almayı gösteriyor.
Html'den almayı başarabildiğinize göre:

Kod: Tümünü seç

var 
  doc: IHTMLDocument2;
  s: string;
begin
  doc := webBrowser.Document as IHTMLDocument2;
  s := doc.body.innerHTML;
Burada elde edilen string(s) HTML kodları verir. Bundan sonrası artık size kalmış.
Not: baştan belirteyim aynı şekilde bunun üzerine tekrar hazır kod isterseniz ben Sn. mrmarman kadar kibar olamam :(
There's no place like 127.0.0.1

barissagir
Üye
Mesajlar: 5
Kayıt: 17 Haz 2014 03:39

Re: ASPX sayfasındaki verileri alma

Mesaj gönderen barissagir » 05 Mar 2015 08:32

yardımlarınız için çok teşekkür ederim.

Cevapla