Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Website durchsuchen (https://www.delphipraxis.net/98333-website-durchsuchen.html)

marabu 25. Aug 2007 13:27

Re: Website durchsuchen
 
Hallo,

mit der Indy HTTP-Client-Komponente kannst du dir eine Datei per HTTP vom Server holen. Dann brauchst du einen Parser, der dir den komfortablen Zugriff auf ein HTML-Dokument gestattet und da bietet sich MSHTML an, weil es auf jedem PC vorhanden ist. Wenn du jetzt den per HTTP geholten Seitenquelltext z.B. mit der Funktion GetDocument() in ein IHTMLDocument lädst, dann kannst du mit ExtractLinks() alle Verweise in eine StringList übertragen.

Freundliche Grüße

Catbytes 25. Aug 2007 13:56

Re: Website durchsuchen
 
Zitat:

Zitat von marabu
...und da bietet sich MSHTML an, weil es auf jedem PC vorhanden ist...

Wirklich auf jedem? :wink: :mrgreen:

Mark90 25. Aug 2007 14:09

Re: Website durchsuchen
 
Zitat:

Zitat von marabu
Hallo,

mit der Indy HTTP-Client-Komponente kannst du dir eine Datei per HTTP vom Server holen. Dann brauchst du einen Parser, der dir den komfortablen Zugriff auf ein HTML-Dokument gestattet und da bietet sich MSHTML an, weil es auf jedem PC vorhanden ist. Wenn du jetzt den per HTTP geholten Seitenquelltext z.B. mit der Funktion GetDocument() in ein IHTMLDocument lädst, dann kannst du mit ExtractLinks() alle Verweise in eine StringList übertragen.

Freundliche Grüße

Noch ne kleine frage: in welcher unit befindet sich GetDocument?

Klaus01 25. Aug 2007 14:16

Re: Website durchsuchen
 
Hast Du die den Link zu GetDocument angeschaut, dort ist sie zu finden.

Grüße
Klaus

marabu 25. Aug 2007 14:20

Re: Website durchsuchen
 
Hallo,

damit du auf CoHtmlDocument und die anderen verwendeten Schnittstellen zugreifen kannst, musst du noch Mshtml in deine Uses-Klausel einbinden.


@Catbytes: Gibt es einen funktionierenden Windows-PC ohne Mshtml.dll? Der Explorer ist abhängig von Shdocvw.dll und diese Bibliothek baut auf Mshtml.dll auf. Weißt du das nicht oder willst du mir nur eine Lektion in Sophistik erteilen?

Freundliche Grüße

Mark90 25. Aug 2007 14:29

Re: Website durchsuchen
 
das hab ich gemacht jedoch meldet delphi bei GetDocument() undeclared identifier! hier mein code

Delphi-Quellcode:
....

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Mshtml, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    Button1: TButton;
    EdURL: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure ExtractLinks(doc: IHTMLDocument2; s: TStrings; SearchString: String);
var
  ec: IHTMLElementCollection;
  e: IHTMLElement;
  i: integer;
  url: Variant;
begin
  ec := doc.links;
  for i := 0 to Pred(ec.length) do
  begin
    e := ec.item(i, 0) as IHTMLElement;
    url := VarToStr(e.getAttribute(SearchString, 0));
    if url <> '' then
      s.Add(url);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  docd: IDispatch;
  doc: IHTMLDOCUMENT2;
  url: String;
begin
  url := EdUrl.Text;
  docd := GetDocument(IdHttp1.Get(url));

end;

Klaus01 25. Aug 2007 14:36

Re: Website durchsuchen
 
Delphi-Quellcode:
function GetDocument(const markup: WideString): IDispatch;
var
  doc: OleVariant;
begin
  Result := CoHtmlDocument.Create;
  doc := Result;
  doc.Open;
  doc.Write(markup);
  doc.Close;
end;
und war hier zu finden.
Und diesen Hinweis hat marabu noch dazu geschrieben:

Zitat:

Zitat von marabu
Dabei darfst du nicht vergessen die Units ActiveX und Mshtml einzubinden.

Grüße
Klaus

Mark90 25. Aug 2007 14:43

Re: Website durchsuchen
 
ich hab sie eingebunden aber es kommt immer noch eine fehlermeldung: Undeclared identifier

hier mein code:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Mshtml;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  GetDocument('xyz');
end;

end.

Klaus01 25. Aug 2007 15:27

Re: Website durchsuchen
 
Kommt die Fahlermeldung so auch immer noch ?
Grüße
Klaus
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActiveX, Mshtml;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetDocument(const markup: WideString): IDispatch;
var
  doc: OleVariant;
begin
  Result := CoHtmlDocument.Create;
  doc := Result;
  doc.Open;
  doc.Write(markup);
  doc.Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  GetDocument('xyz');
end;

end.

Mark90 25. Aug 2007 16:31

Re: Website durchsuchen
 
@klaus es kommt keine meldung mehr!! mein fehler war auf die 2. seite dieses threads zu wechseln :wall: :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz