Bing search sonraki sayfa

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Bing search sonraki sayfa

Mesaj gönderen hido »

Merhaba; Bing arama motorunda bir sonraki sayfaya geçme işlemi için butona click yaptırmak istiyorum fakat butonun id si olmadığı için click işlemi gerçekleşmiyor acaba bu konuda ne yapabilirim?

Kod: Tümünü seç

<a href="/search?q=arabam&first=21&FORM=PORE" class="sb_pagN" title="Sonraki " h="ID=SERP,5212.1"><div class="sw_next">Sonraki</div></a>
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Bing search sonraki sayfa

Mesaj gönderen SimaWB »

class isminden (sb_pagN) linki bulabilirsiniz.
Tüm linkleri listeye alın:

Kod: Tümünü seç

links := WebBrowser1.OleObject.Document.getElementsByTagName("a");
Daha sonra döngü içinde her bir link'in className'ini kontrol edin.
There's no place like 127.0.0.1
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Bing search sonraki sayfa

Mesaj gönderen hido »

Sayın hocam;

Memo1.Lines.Add(IEApp.Document.getElementsByTagName('a')); ve
ButonName := (IEApp.Document.getElementsByClassName('sb_pagN')); memoya aldığımda ([object]) olarak geliyor acaba nerede hata yapıyorum :duvar:

Kod: Tümünü seç

        if (VarIsEmpty(IEApp)) then
        begin
          IEApp := CreateOleObject('InternetExplorer.Application');
          ShowWindow(IEApp.HWND, SW_SHOWMAXIMIZED);
          IEApp.Visible := True;
        end;
        IEApp.Navigate('https://www.bing.com/search?q=' + 'Arabam');
        while (IEApp.Busy) - 1 do
        begin
          Sleep(1000);
          Application.ProcessMessages;
          for I := 0 to IEApp.Document.Links.length - 1 do
          begin
            Memo1.Lines.Add(IEApp.Document.getElementsByTagName('a'));
            ButonName := (IEApp.Document.getElementsByClassName('sb_pagN'));
            if ButonName = 'sb_pagN' then
            begin
              Bilgi.Caption := 'İşlem Devam Ediyor Lütfen Bekleyin...';
            end;
          end;
        end;
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Bing search sonraki sayfa

Mesaj gönderen Lord_Ares »

şu konuda mrmarman hocamın neFis bir örneği var arabam com sayfasında sayfa sayısını alıp sayfa sayfa geziyor açıklamalı . örneğide mecut indirebilrsin.
Mrmarman hocama emeğinle bu güzel örneği paylaştığı için teşekkür ediyorum.

viewtopic.php?f=2&t=32298#p174366
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Bing search sonraki sayfa

Mesaj gönderen hido »

Teşekkür ederim sayın mrmarman hocamın paylaşımını daha önce ve bugün tekrar inceledim maalesef ki işimi çözmüyor...

Bir kaç gündür ve dün gece boyunca SimaWB hocamın verdiği (links := WebBrowser1.OleObject.Document.getElementsByTagName("a");) fikir konusunda araştırma yaptım fakat hiç bir şekilde sonuç alamadım memoya
[object HTMLCollection] veya [object] olarak geliyor...


Örnek kod:

Kod: Tümünü seç

procedure TForm3.SpeedButton1Click(Sender: TObject);
var
  i: integer;
  deneme: variant;
begin
  deneme := Form2.WebBrowser1.OleObject.Document.getElementsByTagName('a');
  for I := 0 to deneme.length - 1 do
  begin
    Memo1.Lines.Add(deneme);
  end;
end;
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Bing search sonraki sayfa

Mesaj gönderen SimaWB »

Kod: Tümünü seç

var
  Doc: IHTMLDocument2;
  Links: IHTMLElementCollection;
  aLink: IHTMLElement;
  i: integer;
begin
  Doc := WebBrowser1.Document as IHTMLDocument2;
  Links := Doc.Links;
  for i := 0 to Links.Length-1 do
  begin
    aLink := Links.Item(i, EmptyParam) as IHTMLElement;
    if aLink.ClassName = 'sb_pagN' then
      aLink.Click;
  end;
There's no place like 127.0.0.1
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Bing search sonraki sayfa

Mesaj gönderen hido »

Sayın hocam SimaWB harikasınız resmen hedefi 12 vurdunuz yolunuz açık olsun...

Not: Uses'e MSHTML; eklenecek...
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Bing search sonraki sayfa

Mesaj gönderen brs »

Selamlar;

Ben bu kodu İnternet Explorer entegre etmek istedim fakat resimde görüldüğü gibi durumla karşılaştım acaba bu durumu nasıl çözebilirim...

[dcc32 Fatal Error] F2063 Could not compile used unit 'Ayarlar.pas'

Resim
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Bing search sonraki sayfa

Mesaj gönderen hido »

brs yazdı:Selamlar;

Ben bu kodu İnternet Explorer entegre etmek istedim fakat resimde görüldüğü gibi durumla karşılaştım acaba bu durumu nasıl çözebilirim...

[dcc32 Fatal Error] F2063 Could not compile used unit 'Ayarlar.pas'

Resim

Merhaba bende çözemedim...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Bing search sonraki sayfa

Mesaj gönderen SimaWB »

brs yazdı:[dcc32 Fatal Error] F2063 Could not compile used unit 'Ayarlar.pas'
Bu hata mesajı ile birşey anlayamayız. Bundan önce başka hata mesajı olmalı?
There's no place like 127.0.0.1
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Bing search sonraki sayfa

Mesaj gönderen brs »

Hocam, Hata ekranı bu kadar başka bir şey yok.

Resim
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Bing search sonraki sayfa

Mesaj gönderen SimaWB »

Dikkatli bakarsan öncelikle aldığına hata mesajı: E2015 !
Doc değişkenini IHTMLDocument2 olarak tanımladığına emin misin?
There's no place like 127.0.0.1
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Bing search sonraki sayfa

Mesaj gönderen brs »

Selam Kodlar aşağıda hata nerede hocam anlamadım (Doc := IEApp.Document as IHTMLDocument2;) Kısmında Sorun yşıyorum

Kod: Tümünü seç

procedure TForm3.SpeedButton1Click(Sender: TObject);
var
  I: Integer;
  Sayfa: String;
  IEApp: OleVariant;
  Doc: IHTMLDocument2;
  Links: IHTMLElementCollection;
  aLink: IHTMLElement;
begin
  try
    if (VarIsEmpty(IEApp)) then
    begin
      IEApp := CreateOleObject('InternetExplorer.Application');
      ShowWindow(IEApp.HWND, SW_SHOWMAXIMIZED);
      IEApp.Visible := True;
    end;
    IEApp.Navigate('https://www.bing.com/search?q= ' + 'Telefon');
    while (IEApp.Busy) - 1 do
    begin
      Sleep(1000);
      Application.ProcessMessages;
      Doc := IEApp.Document as IHTMLDocument2;
      Links := Doc.Links;
      for I := 0 to Cardinal(IEApp.Document.Links.length) - 1 do
      begin
        Link := IEApp.Document.Links.Item(I);
        Sayfa := Trim(IEApp.Document.Links.Item(I).InnerText);
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Bing search sonraki sayfa

Mesaj gönderen SimaWB »

Ben IEApp.Navigate 'i görünce IEApp'ın TWebBrowser olduğunu düşünmüştüm. Verdiğim örnek kodlar hep TWebBrowser içindir.
There's no place like 127.0.0.1
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Bing search sonraki sayfa

Mesaj gönderen brs »

SimaWB yazdı:Ben IEApp.Navigate 'i görünce IEApp'ın TWebBrowser olduğunu düşünmüştüm. Verdiğim örnek kodlar hep TWebBrowser içindir.
Canın Sağ olsun...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Cevapla