PHP Frage, string nach vorkommen durchsuchen

Domi83

Rear Admiral
Registriert
Feb. 2010
Beiträge
5.412
Hallo Leute, ich habe eine kleine Frage an Euch...
Ich versuche seit ungefähr zwei Stunden den ganz normalen Quellcode einer Internetseite zu durchsuchen, funktioniert aber irgendwie nicht so wirklich wie ich mir das vorstelle.

Was ich bauen möchte ist eigentlich eine Art Crawler, ich habe eine URL die ich dem Script gebe die durchsucht werden soll, unter dieser URL möchte ich nun das meine domain.tld herausgesucht wird. Ich möchte aber gerne wissen mit welchen Begriff meine Domain verlinkt ist und anschließend dieses eine Wort in meine Datenbank übertragen. Ich muss also so etwas baue das ungefähr folgendes macht...
-> suche: "<a href="*'domain.tld'*">(.*)</a>"

Ich habe bis dato nur die umgedrehte Version versucht zu bauen, also verlinktes Wort suchen und mir ausgeben welche URL dahinter steht. Aber selbst daran scheitere ich irgendwie und hoffe jetzt einen Ansatz oder Tipp zu bekommen.

Ich weiß, es gibt zig tools die so etwas vielleicht auch tun / können, aber ich habe meine eigene Datenbank mit URLs wo Links zu unseren Domains angegeben sein sollen. Nun möchte ich diese URLs abfragen und wissen mit welchen Begriff (Keyword) wir verlinkt sind und das in meiner Datenbank wieder speichern.

Wer kann mir da helfen?
Gruß, Domi
 
Ich bin momentan selber mit einem Crawler beschäftigt. Ich verwende zum auseinander nehmen der Seiten einen HTML-Parser der einen Objektbaum erzeugt auf dem ich direkt Anfragen nach bestimmten Elementen durchführen kann. Ist allerdings Java(JSoup Library). Ich weiß leider nicht ob es etwas ähnliches in PHP gibt. Ansonsten währe villeicht XPath eine Option?
 
Code:
<a[^>]+href="([^"]+sysprofile\.de[^"]+)"[^>]+>(.*?)</a>
Sucht dir alle Links mit sysprofile.de aus einem Text heraus. Als Hits gibts die URL und die Beschreibung.

regexpal.com find ich übrigens am besten für Regex-Sachen zum Durchtesten.
 
Domi83 schrieb:
-> suche: "<a href="*'domain.tld'*">(.*)</a>"

Die funktioniert so nicht, denn du schließt hier jegliche anderen Attribute (und deren Reihenfolge) für <a> aus. Du musst sowohl vor als auch nach dem href="" gucken, ob etwas dasteht, dass nicht gerade auf "> endet.
Außerdem... *'domain geht nicht, falsche Wildcard-Notation für RegExp.


Insgesamt sinniger wäre wohl, einen DOM-Parser zu verwenden... und siehe da, Google spuckt direkt was raus: http://simplehtmldom.sourceforge.net/
Vor allem im Hinblick auf
PHP:
foreach($html->find('a') as $element) 
       echo $element->href . '<br>';
Für dich sicher interessant.
 
Hallöchen an alle... vielen vielen Dank für die Tipps und Erklärungen.
Ich hatte mit dem preg_match_all() eine Abfrage gebaut, die auch funktioniert...
Code:
<a href=".*'.$this->data['key'].'.*">(.*)<\/a>

Aber auf die Erweiterung von Yuuri wäre ich spontan gar nicht gekommen. Das werde ich jetzt noch ergänzen und dann funktioniert es schon mal im kleinen Stiel. Den DOM Parser von Daaron gucke ich mir jetzt auch noch an und hoffe, dass ich das auch hin bekomme. Aber für den ersten Schritt scheint es zu funktionieren :D

Nun weiter vertiefen und ausprobieren :)
Chef hat mir nämlich eine Liste mit angeblich über 2.000 Backlinks zu unserer Domain in die Hand gedrückt und ich soll mal schauen, mit welchem Text wir verlinkt sind. Da lasse ich das doch lieber automatisiert machen. Ein wenig händische Kontrolle kommt dann noch dazu, aber wenn mir der Automatismus bei 80% helfen kann, wäre das schon mal eine Erleichterung :D
 
Da entsteht eher die Frage, wieso dein Chef nicht Werkzeuge wie Majestic SEO verwendet...
 
Naja, da ist wiederum die Frage... kann ich dem System eine Liste von Domains (URLs) geben, dass dann step-by-step alles abklappert und schaut ob unsere URL dort verlinkt ist, und mit welchen Keyword?!?
 
Ne, das eher nicht. Aber du kriegst halt brühwarm serviert, wo der Crawler überall Backlinks gefunden hat etc.

Edit: Manchmal is man natürlich auch betriebsblind...
Nehmt doch einfach die Google Webmaster Tools. Menüpunkt Suchanfragen -> Links zu ihrer Webseite.
 
Zuletzt bearbeitet:
Joa, von dem Webmaster und Disavow Tool sind die ganzen URLs die zu unserer Seite führen.
Nun wollen wir aber noch wissen, mit welchem Keyword / Linktext wir verlinkt sind, dass liefern die Tools ja nicht... zumindest sagte das mein Kollege. Daher der "Crawler" der schauen soll, wie wir verlinkt sind. Das soll dann in unsere eigene Datenbank. Anhand dieser Datenbank schreiben wir dann schon mal den einen oder anderen an und sagen "mach weg den Link" oder das dieser verändert werden soll und dann geht es weiter. Aber Chef sein Wunsch ist erst einmal, das ich damit anfange :freak:

Gruß, Domi
 
Zurück
Oben