Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Fragen zum Aufbau eines Spiders (Base)

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
pvdb
PostRank 5
PostRank 5
Beiträge: 321
Registriert: 16.01.2005, 22:37
Wohnort: Hannover

Beitrag von pvdb » 22.05.2007, 15:14

Hallo,

in meiner Softwareanwendung ist ein Bestandteil das Spidern einer Homepage. Durch Testen lassen habe ich erfahren das die Links nicht immer korrekt ausgelesen werden, nämlich dann, wenn ein Base Tag definiert ist. Bis heute hatte ich von einem Base Tag nie was gehört.

Ich frage mich nun schon die ganze Zeit welche Logig mir korrekt die Links ermittelt.

Ich habe dies hier im Kopf:

Code: Alles auswählen

wenn vollständer link (also mit http://)
{
    link aufnehmen
}
else (link unvollständig, also kein http://)
{
   wenn erstes zeichen ist '/'
   {
      die hauptdomain (http://www.domain.de) vorne ranhängen und als link aufnehmen
   }
   else
   {
      wenn existiert ein base eintrag
      {
          den base eintrag vorne ran hängen und als link aufnehmen
      }
      else
      {
          domainpfad von vorgänger url extrahieren (http://www.11domain111.de/test/file.php) = http://www.11domain111.de/test/

          domainpfad vorne anhängen und link aufnehmen
      }
   }
}

Ich weiß z.b. nicht ob der base Eintrag immer gilt, egal ob ein Link mit / anfängt oder nicht. Wenn ich in einem Ordner bin und mit /file.php linke, dann geht da linkt ja auf die hauptdomain. Nur wie ist das beim Base?

Wäre nett wenn sich mal jemand meine Logic anschaut und mich da verbessert.

Phil

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Michael
PostRank 8
PostRank 8
Beiträge: 808
Registriert: 04.01.2004, 20:23
Wohnort: Herne

Beitrag von Michael » 22.05.2007, 19:37

Dafür gibt es doch fertige Klassen. Checke mal nutch. Ist zwar erst Version 0.9, aber schon in der 0.8 Version war das Auflösen von Links in nutch kein Problem.

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 23.05.2007, 05:52

pvdb hat geschrieben:Ich weiß z.b. nicht ob der base Eintrag immer gilt, egal ob ein Link mit / anfängt oder nicht. Wenn ich in einem Ordner bin und mit /file.php linke, dann geht da linkt ja auf die hauptdomain. Nur wie ist das beim Base?
BASE gibt immer wenn keine Domain im URL

BASE gilt bei
/folder/file.html
subfolder/file.html
datei.html
/index.html

BASE gilt nicht
hatetepe://......


Dein Code
wenn ganz links ein Slash, dann ...
else, gibts einen BASE

ist falsch
auch ohne Slash links ist es ein interner Link
alle internen Links, denen nicht extra die Domain vorangestellt wird, sind vom Base betroffen

BASE kann auch auf Externe wirken
siehe GoogleCache
Google hat dort alle eigenen Links mit seiner Domain
und damit die Links der gecachten Seite funktionieren, ist DOmain/path/ zu(von) dieser Seite als BASE definiert

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


pvdb
PostRank 5
PostRank 5
Beiträge: 321
Registriert: 16.01.2005, 22:37
Wohnort: Hannover

Beitrag von pvdb » 23.05.2007, 07:37

hi,

danke für die infos. auf eine externe libray wollte ich ungern zugreifen, da es sich um eine os x/windows desktop anwendung handelt und ich lieber bei meinen eigenen code bleibe.

nach deinen info, würde ich meine logik wie folgt abändern:

Code: Alles auswählen

wenn vollständer link (also mit *://) 
{ 
    link aufnehmen 
} 
else (link unvollständig, also kein *://) 
{ 
   wenn existiert ein base eintrag 
   { 
      den base eintrag vorne ran hängen und als link aufnehmen 
   } 
   else 
   { 
      wenn erstes zeichen ist '/' 
      { 
         die hauptdomain (*://www.domain.de) vorne ranhängen und als link aufnehmen 
      } 
     else 
     { 
         domainpfad von vorgänger url extrahieren (http://www.11domain111.de/test/file.php) = http://www.11domain111.de/test/ 

         domainpfad vorne anhängen und link aufnehmen
      } 
   } 
} 
Das * soll heißen, dass ich es noch konform machen muss, damit es auch bei https und so läuft.

Ist ansonsten die Logik soweit okay?

Phil

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 23.05.2007, 12:45

pvdb hat geschrieben:Ist ansonsten die Logik soweit okay?
ja, das sieht gut aus ....
... aber obs das auch ist weiss man erst wennman es laufen läst


und aufpassen solteste noch wenn
.. = einen Ordner höher
. = aktueller Ordner
als Ordner im Link vorkommen
am Ende hast du eine URL

domain.tld/blog/2007/05/23/../../../../img/header.jpg

pvdb
PostRank 5
PostRank 5
Beiträge: 321
Registriert: 16.01.2005, 22:37
Wohnort: Hannover

Beitrag von pvdb » 27.05.2007, 11:55

danke für die antwort. habe das mit der base sache inzwischen drinnen und das mit den ../../ und . und .. und diesen dingen muss nur noch eine funktion hier die das auflöst, aber dies sollte kein problem werden ;)

phil

pvdb
PostRank 5
PostRank 5
Beiträge: 321
Registriert: 16.01.2005, 22:37
Wohnort: Hannover

Beitrag von pvdb » 31.05.2007, 17:01

achso, nachdem ich mir eine große testseite gebaut habe, haben die untersuchungen und test ergeben, dass deine aussage

"BASE gibt immer wenn keine Domain im URL"

nicht ganz korrekt ist :)

wenn der link mit einem / anfängt ist es weiterhin das homedir :)

phil

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag