Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Unterseiten einer Homepage ermitteln (https://www.delphipraxis.net/154687-unterseiten-einer-homepage-ermitteln.html)

youuu 21. Sep 2010 13:48

Unterseiten einer Homepage ermitteln
 
Hi,

wie kann ich alle Unterseiten einer Homepage ermitteln?
Das heißt, das ich keine externen Verlinkungen mit aufsammeln möchte.

Unterseiten können auch relative Pfade enthalten.

Namenloser 21. Sep 2010 13:57

AW: Unterseiten einer Homepage ermitteln
 
Wie hast du es bisher versucht?

Luckie 21. Sep 2010 13:59

AW: Unterseiten einer Homepage ermitteln
 
Allen Links folgen und wenn ein Link eine fremde Domain beinhaltet, dann gehört die Seite nicht zur Seite.

youuu 21. Sep 2010 14:06

AW: Unterseiten einer Homepage ermitteln
 
Ich hätte es jetzt umständlich gemacht mit:

1. idhttp.get
2. per "Pos", "Copy" alle Links gesucht
3. aussortieren der links die auf eine andere homepage führen
4. die relativen Pfade umgeschrieben.

Ich dachte nur es geht vielleicht einfacher.

rollstuhlfahrer 21. Sep 2010 14:26

AW: Unterseiten einer Homepage ermitteln
 
ja, einfacher geht es mit einem Sitemap, vor allem das, was von Google abgefragt wird. Nur gibt es keine definierte Stelle, wo das Sitemap liegt.

Bernhard

PS: Allen Links folgen ist nun einfach die einzige Lösung, wenn man nicht über "Hintertüren" an mehr Informationen kommt.

youuu 21. Sep 2010 14:33

AW: Unterseiten einer Homepage ermitteln
 
Naja, ich kann nicht davon ausgehen, das die Seiten alle eine Sitemap besitzen und diese alle in einen einhetlichen Format angegeben sind.
Da existeren ja doch ei paar mehr Varianten.

rollstuhlfahrer 21. Sep 2010 14:37

AW: Unterseiten einer Homepage ermitteln
 
ja genau deswegen wirst du nicht drum herum kommen, allen Links zu folgen.

Bernhard

youuu 21. Sep 2010 14:43

AW: Unterseiten einer Homepage ermitteln
 
Ok, dann mach ich mich mal daran.
Danke

Bummi 21. Sep 2010 14:44

AW: Unterseiten einer Homepage ermitteln
 
vielleich hilft Dir der Codefetzen aus unserer Codebase?
Delphi-Quellcode:
procedure TCrawlingThread.WBDocumentComplete(Sender: TObject ;const pDisp:IDispatch;var URL: OLEVariant);
var
  i:Integer;
  ElementCollection: IHTMLElementCollection;
  HtmlElement: IHTMLElement;
  AnchorString: string;
  sl:TStringList;
begin
  try
  if Assigned((FWB.Document as IHTMLDocument2).body) then
    begin
      sl:=TStringList.Create;
      try
      sl.Text := ((FWB.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange.text;
      sl.SaveToFile(IncludeTrailingBackSlash(FFilePath) + FGuid);
      finally
      sl.Free;
      end;
    end;
  ElementCollection:= (FWB.Document as IHTMLDocument2).all;
  For i := 0 To ElementCollection.length - 1 do
      begin
            HtmlElement := ElementCollection.item(I, '') as IHTMLElement;
            if HTMLElement.tagName = 'A' then
            begin
              AnchorString := (HtmlElement as IHTMLAnchorElement).href;
              FCollectedLinks.Add(AnsiLowerCase(AnchorString));
              end;
      end;
  FCanTerminate := true;

  except
  on E:Exception do FError := E.Message;
  end;
end;

Die Muhkuh 21. Sep 2010 16:08

AW: Unterseiten einer Homepage ermitteln
 
Lustig wird's dann bei Flash-Seiten oder welche, die den Content per JavaScript nachladen und diesen auch nur per JS austauschen.

shmia 21. Sep 2010 16:37

AW: Unterseiten einer Homepage ermitteln
 
Schau mal hier:
Felix colibri Web Spider
Der Delphi Sourcecode ist zwar etwas verkorkst, aber die Erklärungen zum "Spidering Algorithm" sind ganz nützlich.

youuu 21. Sep 2010 19:53

AW: Unterseiten einer Homepage ermitteln
 
Erhalte soweit alle Links, aber wie kann ich bitte erkennen ob es Links sind oder Bilder oder oder ... ?

Die Muhkuh 21. Sep 2010 19:56

AW: Unterseiten einer Homepage ermitteln
 
Gucken, ob es auf .html oder .jpg etc. endet.

Valle 21. Sep 2010 20:27

AW: Unterseiten einer Homepage ermitteln
 
Zitat:

Zitat von Die Muhkuh (Beitrag 1051092)
Gucken, ob es auf .html oder .jpg etc. endet.

Nein. Dem vom Server gesendeten Content-Type-Header auswerten. ;-)

Liebe Grüße,
Valle

youuu 22. Sep 2010 06:56

AW: Unterseiten einer Homepage ermitteln
 
Ich wollte gerade sagen, nicht es kann ja html, htm, php, phpX usw. ändern.
Wie genau prüfe ich den Content Header?

youuu 22. Sep 2010 07:04

AW: Unterseiten einer Homepage ermitteln
 
Also mit

Delphi-Quellcode:
IdHTTP.Head(FHomepage);
IdHTTP.Response.RawHeaders.Text;
erhalte ich folgendes

Zitat:

Date: Wed, 22 Sep 2010 06:03:08 GMT
Server: Apache
X-Powered-By: PHP/5.2.12-nmm2
Set-Cookie: cookieHash=4cbf1ca3f8bf102c9170f6bde3bb1377687a070 2; expires=Fri, 22-Oct-2010 06:03:08 GMT
Set-Cookie: PHPSESSID=421317f10bff0a87b5c58f359bc04f82b04da899 ; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Type: text/html; charset='UTF-8'

Edit: ah ich seh schon ganz unten :)

youuu 22. Sep 2010 07:22

AW: Unterseiten einer Homepage ermitteln
 
Leider zeigt mir der Content Typ auch bei "css" Dateien "Text/Html" an.

Muss ich nun doch extra die Endung prüfen?

Valle 22. Sep 2010 08:45

AW: Unterseiten einer Homepage ermitteln
 
Er zeigt bei CSS "text/html" an? :gruebel:
Kannst du mir den Link mal (notfalls per PN) schicken?

Liebe Grüße,
Valle

himitsu 22. Sep 2010 08:51

AW: Unterseiten einer Homepage ermitteln
 
Wenn die CSS-Datei z.B. per PHP-Script generiert/ausgeliefert wird und der Programmierer wiedermal vergessen hat den ContentType ordentlich zu setzen, dann kann sowas schonmal bei rauskommen.


PS: Das Optimalste und das, für alle Seiten, Beste wäre,
wenn die Webseite direkt alle nötigen Informationen bereitstellt und man somit nix mehr großartig pauslesen und parsen muß.
Wenn es sich immer un die selbe Webseite handelt, dann könnte man ja mal den Webmaster ganz lieb fragen. :angel:

Valle 22. Sep 2010 08:56

AW: Unterseiten einer Homepage ermitteln
 
Hallo,

wir haben eben festgestellt, dass der Server bei der CSS-Seite alles richtig macht.
Es muss am Delphi-Code liegen. Indy-Experten hier? :thumb:

Liebe Grüße,
Valle

youuu 22. Sep 2010 09:22

AW: Unterseiten einer Homepage ermitteln
 
Hm, sehr komisch nun funktioniert es auf einmal korrekt.

Und dabei habe ich nur alles von der probe unit in die wirkliche Programm Unit implementiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr.

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