Gecko в Delphi

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by RAINUR, 16 Feb 2011.

  1. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Пишу программу используя компонент Gecko.
    И встретился с одной проблемой.
    Я зашел на сайт и мне нужно автоматически собрать все ссылки, можно ли это реализовать не обрабатывая html код смому, то есть как в TWebBrowser просто получить список ссылок в открытом окне. .
     
  2. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    А не проще ли гетом получить код и отпарсить?
     
  3. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Пользователь сначало авторизовывается на сайте, потом получает список ссылок.
     
  4. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    Ну посмотри снифером процесс авторизации и напиши.
    а потом получай код страницы.
     
  5. ChymeNik

    ChymeNik Member

    Joined:
    31 Aug 2010
    Messages:
    30
    Likes Received:
    7
    Reputations:
    9
    RegularExpressions + Synapse/Indy
     
  6. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    еще возможно как вариант, сохрани страницу в файл и парсь сам файл.
    с кодом не помогу так как нет у меня сейчас Gecko
     
  7. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Для TWebBrowser должен быть установлен IE, а на Linux'e ведь его нет))))))
    Да и так проблемы из-за версии IE могут быть. .
     
  8. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    Lazarius Free Pascal
     
  9. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    уже 100500 спрашиваю "как поставить Gecko .. возможно в этот раз мне повезет))
    вроде все правильно делаю но не получается ...
    кто уже сделал этот подвиг? как?

    ПС гуглить пробовал ... первые два недели
     
  10. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    http://help.sander.su/content/gecko
    вот тут читай:)
     
  11. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Как получиьт html код, уже сколько ищу, найти не могу.
     
  12. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    Должен быть метод сохранить , сохраняй в файл и потом читай из файла.
     
  13. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    Code:
    [DCC Error] nsXPCOMGlue.pas(374): E2291 Missing implementation of interface method nsIDirectoryServiceProvider.GetFile
    (Delphi XE)
     
  14. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    должен быть, но и этого не нашел:)
     
  15. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0

    Code:
    procedure WB_Save(WB: TWebbrowser);
    var
      Dispatch: IDispatch;
      CommandTarget: IOleCommandTarget;
      vaIn: OleVariant;
      vaOut: OleVariant;
    begin
      if WB_DocumentLoaded(WB) then
          // ensure not busy
        if not (WB.Busy) then
        begin
          Dispatch := WB.Document;
          Dispatch.QueryInterface(IOleCommandTarget, CommandTarget);
          vaIn := '';
          vaOut := '';
          try
            CommandTarget.Exec(PGUID(nil),
              OLECMDID_SAVEAS,
              OLECMDEXECOPT_DONTPROMPTUSER,
              vaIn, vaOut);
          except
             {handle exceptions}
            on E: Exception do
              MessageDlg('ERROR: Unable to show Save As dialog. ' + #13 + E.ClassName
                + ': ' + E.Message + '.', mtError, [mbOk], 0);
          end; {try..except..}
        end;
    end;
    
    Вот еще полезная функция
    Code:
    function WB_DocumentLoaded(WB: TWebbrowser): Boolean;
    var
      iDoc: IHtmlDocument2;
    begin
      Result := False;
      if Assigned(WB) then
      begin
        if WB.Document <> nil then
        begin
          WB.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
          Result := Assigned(iDoc);
        end;
      end;
    end;
    
     
    #15 arnis, 20 Feb 2011
    Last edited: 20 Feb 2011
  16. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    arnis, это все IE:)
    А мне нужен Gecko:)
     
  17. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    Да с тормозил.
    нет у меня на машине Gecko и нет желания ставить.


    Вот по гуглил, нашел такую строку проверяй

    mzGecko.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_PROMPTUSER {OLECMDEXECOPT_DODEFAULT}, PageFilename);

    вот тут http://delphi.mozdev.org/source.html есть сырец мини браузера на Gecko скачай посмотри
     
    #17 arnis, 20 Feb 2011
    Last edited: 20 Feb 2011
  18. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Я уже весь гугл перерыл))))))
    Что только непробовал ввести в поиск.
    И это я тоже нашел, там нет вообще такой порцедуры))))))))))))
    Там какие то другие компоненты используются ..
     
  19. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ройся в официальной доке
    https://developer.mozilla.org/en/Embedding_Mozilla
    может чтонить там и найдешь

    Вот тут вот покопайся http://doxygen.db48x.net/mozilla/html/classes.html
    пожет что и найдешь
     
    #19 slesh, 21 Feb 2011
    Last edited: 21 Feb 2011
  20. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    За такое время как ты убил на Геко можно было бы написать на инди .