Yahoo Backlinks und indexierte Seiten checken

Post von realloc | Einsortiert in Code am 16. Oktober 2008 | 19 Kommentare

Wer sich fragt, wie man die Anzahl der Backlinks (inlinkData) und der indexierten Seiten (pageData) bei Yahoo mit einem Script holen kann, darf sich über die hier beschriebene Lösung freuen. Man muss sich glücklicherweise bei Yahoo schon lange nicht mehr damit plagen, die Seite zu holen, zu parsen und dann zu warten bis Yahoo mal wieder leichte Änderungen am Design macht, die das einmal funktionierende Script zusammenbrechen lassen. Mit der API von Yahoo und der SimpleXML-Extension von PHP wird das ganze zum Kinderspiel.

Zuerst muss man sich einen API-Key bei Yahoo besorgen. Dann muss das YOUR_API_KEY_HERE in der Anweisung define (‘YAHOO_KEY’, ‘YOUR_API_KEY_HERE’); durch diesen Schlüssel ersetzt werden. Und danach kann’s auch schon losgehen:

<?php

define ('YAHOO_KEY', 'YOUR_API_KEY_HERE');

function getPage ($url) {
        if (function_exists('curl_init')) {
                $ch = curl_init($url);
                curl_setopt($ch, CURLOPT_HEADER, 0);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
                curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
                $retval = curl_exec($ch);
                curl_close ($ch);
                return $retval;
        }
        return file_get_contents($url);
}

class YahooSearch {

        function get () {
                $xml = getPage ($this->url);
                $data = simplexml_load_string ($xml);
                return isset ($data['totalResultsAvailable']) ? (int) $data['totalResultsAvailable'] : 0;
        }

}

class YahooSearchPage extends YahooSearch {

        function __construct ($domain) {
                $this->url =
                        "http://search.yahooapis.com/SiteExplorerService/V1/pageData?appid=" .
                        YAHOO_KEY .
                        "&query=http://" .
                        $domain .
                        "&results=0";
        }

}

class YahooSearchInlink extends YahooSearch {

        function __construct ($domain) {
                $this->url =
                        "http://search.yahooapis.com/SiteExplorerService/V1/inlinkData?appid=" .
                        YAHOO_KEY .
                        "&query=http://" .
                        $domain .
                        "&results=0";
        }

}

$y = new YahooSearchPage ('www.bowling-liga.de');
echo $y->get ();

$y = new YahooSearchInlink ('lloc.de');
echo $y->get ();

?>

In den letzten Zeilen sind dann die Namen der eigenen Domains zu einzuetzen.

Noch ein wichtiger Hinweis: Da auf die Ausgabe des Codes oft kein Verlass ist, weil der Editor zum Beispiel einfache Anführungszeichen und das kaufmännische Und eigenmächtig ändert, gibt es hier auch den Quelltext.

Have fun!

Möglicherweise interessiert Dich auch...



19 Antworten auf “Yahoo Backlinks und indexierte Seiten checken”

  1. Dimi sagt:

    Hi,

    bei mir kommt diese Fehlermeldung:

    Fatal error: Call to undefined function: simplexml_load_string() in /srv/www/htdocs/………../yahoo.php on line 22

    HILFE!!! :)

  2. realloc sagt:

    Das sollte mit PHP5 funktionieren … welche Version ist installiert?

  3. Hallo Dennis,

    Danke für das Script, funktioniert soweit sehr gut. Ich habe gelesen, dass der Service von Yahoo auf 5.000 Anfragen pro IP an einem Tag begrenzt ist. Ich habe knapp 600 Abfragen über ein Tool gemacht und ab der Nummer 101 gibt Yahoo keine Werte mehr aus. Weisst Du, ob es irgendwelche weiteren Beschränkungen gibt? Die 5.000 habe ich ja bei weitem noch nicht erreicht ….

    Danke im Voraus!

    Frank-Andre Thies

  4. realloc sagt:

    Der Yahoo-Service ist bei mir leider auch immer der erste, der nicht mehr antwortet. Schade …

  5. Ich habe jetzt nach jeweils 25 Abfragen eine 30-Sekunden-Pause eingefügt und damit scheint die Sperre bei der Yahoo-API nicht mehr zu greifen!

  6. Paul sagt:

    Vielen Dank für den Code.

  7. Frank sagt:

    Hallo,

    ich bekomme als Ausgabe immer eine 00.

    Hat jemand eine Idee?

    Grüße Frank

  8. realloc sagt:

    Ja, vielleicht … hast Du den genauen Endpunkt angegeben? Ich habe in letzter Zeit keine Probleme mehr, weil ich – als ich den API-Key angefordert habe – den kompletten Pfad eingegeben habe.

    Also nicht nur http://www.entdeckt.org/, sondern http://www.entdeckt.org/linkcheck.php

  9. Frank sagt:

    Hallo Dennis,

    ich vermute es liegt tatsächlich am API-Key.

    Was muss ich den angeben:

    Generic, No user authentication required
    oder
    Browser Based Authentication

    und ggf. bei BBAuth Success URL.

    Vielen Dank!

  10. Frank sagt:

    Funktioniert leider nicht… :-(

  11. Frank sagt:

    Wenn ich die Abfragen manuell aufrufe, kommt folgender Fehler:

    The following errors were detected:

    invalid value: query

    ?

  12. realloc sagt:

    Ich hab’ nur Generic IDs erstellen lassen …

  13. realloc sagt:

    An sich sollten die Klassen einen URL zusammenbauen, der dem Beispiel der Yahoo! Search Web Services entspricht. Was übergibst Du an den Konstruktor? Ich hab in den Klassen für Yahoo schon das http:// mit drin, weil ich die Domains bei anderen APIs oft ohne angeben muss.

    Also – wie in meinem Beispiel oben – muss man

    $y = new YahooSearchInlink (‘www.ploetner.it’);
    echo $y->get ();

    notieren.

  14. realloc sagt:

    Über den Link erhältst Du ein Ergebnis … schau dir mal die maskierten & an. Da liegt das Problem!

  15. Frank sagt:

    Jetzt klappt es. Ich glaube, da war in mehreren Stellen der Wurm drin.

    Vielen Dank für Deine Hilfe und Geduld!

  16. realloc sagt:

    Bitte sehr! Viel Spass beim “yahoobacklinkchecken” …

  17. Azubi sagt:

    Ich habe das 00 Problem gehabt und mir es im Debug Mode angeschaut.
    Wenn der Code nicht in einer HTML Umgebung ist wird das Sonderzeichen &amp nicht ersetzt und deshalb kommt es zum Fehler.

    Ich habe folgende Zeile noch ergänzt und für mein Anliegen reicht es.

    $this->url = str_replace(“&”,”&”, $this->url);

  18. realloc sagt:

    Ja, wie schon oben passiert … anscheinend funktioniert es dann nach dem Kopieren des Codes von dieser Seite schon nicht mehr. Ich muss wohl mal über ein neues Plugin für die Codes nachdenken. Der Editor von WordPress tut scheinbar auch zu viel des Guten.

Einen Kommentar schreiben