![]() |
Website durchsuchen
HI leute,
ich hab mal schon wieder eine Frage. Gibt es eine Möglichkeit eine Website (mit z.b. Indy) nach bestimmten dateien zu durchsuchen? z.b. nach *.txt dokumenten oder *.html dokumenten |
Re: Website durchsuchen
Hallo,
nun, indy durchscuth nicht die html Dateien. Mit idhttp kannst zu z.B. das html Document in eine Stringlist oder einen Stream laden. Die StringList oder den Stream mußt Du dann selber nach dem was Du finden willst durchsuchen. Grüße Klaus |
Re: Website durchsuchen
@klaus1 Ich möchte eigentlich nicht das html dokument durchsuchen sondern die komplette website auf dateien, die man auf der SEite runterladen kann!
aber oK |
Re: Website durchsuchen
Zitat:
Eine Webseite besteht aus verlinkten html Seiten. Eine Webseite wie Du sie siehst wird im Webbrowser visualisiert Grundlage ist das html Document. Grüße Klaus |
Re: Website durchsuchen
Imprinzip schon! Wenn du suchen würdest würdest du das Html dokument auf z.b. datei.txt durchsuchen und da wo es vorkommt den pfad extrahieren und downloaden. Habe ich das richtig interpretiert?
|
Re: Website durchsuchen
Zitat:
Grüße Klaus |
Re: Website durchsuchen
Hallo,
Kernstück eines WebSpiders ist eine Funktion, welche die auf einer HTML-Seite vorhandenen Links ermittelt und dann die entsprechenden Seiten rekursiv aufsucht: ![]() Vorsicht vor Endlosschleifen. Und da alle Seiten einer web site einen nicht zyklusfreien Graph beliebigen Grades darstellen, sollte man auch eine maximale Rekursionstiefe festlegen. Grüße vom marabu |
Re: Website durchsuchen
So nebenbei, Klaus01 er hat nach einer Website gefragt und nicht nach einer Webseite. Aber ich glaube nicht, dass es die Möglichkeit gibt das Verzeichnis zu durchsuchen, auch nicht mit php, da es ja nicht auf dem eigenen Server liegt.
|
Re: Website durchsuchen
Hallo Dominik,
Zitat:
Freundliche Grüße |
Re: Website durchsuchen
hi marabu,
funzt sowas mit der indy nicht? Oder wie verwendest du diese funktion
Delphi-Quellcode:
procedure ExtractLinks(doc: IHTMLDocument2; s: TStrings);
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('href', 0)); if url <> '' then s.Add(url); end; end; |
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 ![]() Freundliche Grüße |
Re: Website durchsuchen
Zitat:
|
Re: Website durchsuchen
Zitat:
|
Re: Website durchsuchen
Hast Du die den Link zu GetDocument angeschaut, dort ist sie zu finden.
Grüße Klaus |
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 |
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; |
Re: Website durchsuchen
Delphi-Quellcode:
und war
function GetDocument(const markup: WideString): IDispatch;
var doc: OleVariant; begin Result := CoHtmlDocument.Create; doc := Result; doc.Open; doc.Write(markup); doc.Close; end; ![]() Und diesen Hinweis hat marabu noch dazu geschrieben: Zitat:
Klaus |
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. |
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. |
Re: Website durchsuchen
@klaus es kommt keine meldung mehr!! mein fehler war auf die 2. seite dieses threads zu wechseln :wall: :wall:
|
Re: Website durchsuchen
Hi,
Zitat:
Zitat:
Mfg FAlter |
Re: Website durchsuchen
Hallo Felix,
ob diese Haarspalterei Mark bei der Lösung seines Problems hilft? Wenn sein in Delphi geschriebenes Programm irgendwann mal auf einem Windows-Clone ohne MSHTML laufen soll, dann werden ihm vielleicht DP-Mitglieder auch dabei helfen. Und in der Zwischenzeit hat er dann Kenntnisse im Umgang mit einer Microsoft-Basistechnologie erworben. Beim Einsatz eines alternativen Parsers kann er dann mit seinem Transferwissen glänzen. Freundliche Grüße |
Re: Website durchsuchen
Zitat:
|
Re: Website durchsuchen
Hi,
erklär ich mal meine Kommentare: ReactOS ??? -> Kurz für "Gibt es denn bei ![]() Und dann fragte ich mich auch noch, ob bei Win 95 MSHTML schon dabei war, wo doch der IE nicht dabei war (und der Windows-Explorer nicht auf diesen aufsetzte). Es war eher als Frage gemeint und nicht als Kritik, da meine Vermutungen des Aussage, MSHTML sei auf jedem PC drauf, widersprechen (wobei ich mich auf die Systeme, auf denen Delphi 2+ Programme laufen) beschränkt habe. Wenn meine Vermutungen mich nicht täuschen, müsstest du auf ReactOS und Windows 95 MSHTML erst noch installieren, bevor dein Programm dort läuft, wenn du MSHTML nutzt. Wobei derzeit sowieso viele größere Delphi-Projekte nicht auf ReactOS fehlerfrei laufen. Mfg FAlter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr. |
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