Jun 29
No Gravatar

Auch wenn nach wie vor nicht geklärt ist, ob und wie die Anzahl der Google +1 “Likes” das organische Suchmaschinenranking beeinflusst, ist sie für mich zumindest im Social Media Bereich eine nennenswerte Metrik.

Im Gegensatz zu Facebook, das eine offene API für die Nutzung der Facebook Share Aktivitäten bietet, hat Google soetwas nicht vorgesehen. Intern gibt es natürlich eine API die verschiedene Funktionen unterstützt, angesprochen wird sie indirekt über den Browser, der durch JavaScript wiederum PHP Files aufruft. Gesichert ist das ganze nur relativ schwach. Für Funktionen, wie das Durchführen des “Likes”, muss man angemeldet sein und sich durch einen Token authentifizieren, was das Ausnutzen komplizierter (also interessanter) macht, da es auch hier – theoretisch – die API Funktion dafür gibt, die man automatisiert ansprechen kann.

Da nicht jeder Besucher einer Seite zwangsläufig bei Google eingeloggt ist, funktioniert das Ablesen auch mit einem statischen Token, der sich nicht ändert und dadurch vermutlich auch nicht durch heavy-usage gebannt wird, wie es vermutlich bei den personalisierten Token der Fall sein wird. Auch wenn es vermutlich ein Abfragelimit auf IP Basis geben wird, lässt sich das durch Proxys etc. einfach umgehen. Die Möglichkeit des Scrapens selbst gibt es schon seit Anfang Juni, ist allerdings etwas fehleranfällig. Je nach Einbauart des +1 Codes wird Google eine andere URL als Like-Ziel angegeben. Je nach Plugin wird die URL der derzeitigen Seite unterschiedlich codiert, wodurch es unter Umständen zu falschen Zahlen kommt (besonders kritisch, wenn in der URL mehrere Sonderzeichen vorkommen). Ich habe das ganze als PHP Methode aufgebaut, die als Parameter ein Array unterstüzt. Für jeden Arrayeintrag wird die Abfrage gemacht, anschließend wird ein gesammeltes Array mit der jeweiligen URL + Like-Score ausgegeben.

Glücklicherweise ist der API-Aufruf wesentlich schneller als der +1 Button, der via JavaScript geladen werden muss. Natürlich kann auch nur eine einzelne URL übergeben werden. Wer das ganze via GET Abfrage lösen will, kann zB die URLs mit einem Trennzeichen, zB ;  trennen (siehe mein Beispielcode).

 

<?php
strstr($_GET["url"], ";") != FALSE ? $urls = explode(";", $_GET["url"]) : $urls[0] = $_GET["url"];
plusonecount($urls);
function plusonecount($urls) {
$result = array();
foreach ($urls as $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $url . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]');
$data = curl_exec($ch);
curl_close($ch);
$json = json_decode($data, true);
$score = $json[0]['result']['metadata']['globalCounts']['count'];
$current = array($url, $score);
array_push($result, $current);
}
/*print_r($result); */
return $result;
}?>

Der Beispielcode besteht aus der Funktion ansich und einem möglichen Funktionsaufruf. Aus Performancegründen würde ich empfehlen, die Möglichkeit des Arrays zu nutzen, sonst muss je nach PHP-Einbindung jedesmal ein neuer PHP und Apache Prozess gestartet werden, was relativ performancehungrig und langsam ist. Ebenfalls würde ich davon abraten, das ganze ohne Proxys oder schlimmstenfalls von eurem eigenen Webhost zu machen. Bitte beachtet außerdem, dass die CURL PHP Extension aktiviert sein muss, da die Daten via POST übertragen werden!

Autor: Maximilian Schirmer

Maximilian Schirmer Maximilian Schirmer ist ein junger selbständiger Suchmaschinenoptimierer aus Wien, der neben ausgewählten Kunden vor allem eigene Großprojekte, wie zum Beispiel Wlan-Info.net betreut. Seine Fachgebiete sind Linkbuilding, Expired-Domains sowie die Programmierung von SEO-Tools.

Weitere Posts zum Thema:

  1. Google greift Facebook an: der neue +1 Button
  2. Google+ Pages und Adwords
  3. Google +1 Button ist da! Eine Einbauanleitung…
  4. Tickt Google noch richtig? “Search Plus Your World”
  5. Eine satirische Betrachtung von Google+

12 Responses to “Google +1 Count scrapen”

  1. Oliver Hauser Says:

    danke huggy, werde gleich mal meine proxy armee anwerfen und testen!

  2. markus hübner Says:

    sauber! ;)

  3. Jan Königstätter Says:

    Für eigene Seiten wird wohl dass Webmaster Tool Daten liefern.
    Man schaue sich nur mal die Seiten ab Seite 50 der Introduction bei der Google IO an:
    http://static.googleusercontent.com/external_content/untrusted_dlcp/www.google.com/en//events/io/2011/static/presofiles/an_introduction_to_the_+1_button.pdf

    Da gibt es auch Daten zum Search Impact und den Usern (Alte usw.)

  4. bazz Says:

    Danke, da wird gleich wider angepasst. :)

  5. Beliebteste Suchbegriffe » Google +1 Count scrapen Says:

    [...] the original post: Google +1 Count scrapen Medien zum Thema   Medien by [...]

  6. Abro Says:

    Joa da waren andere einen Miniticken schneller aber alle Sources sehen sehr ähnlich aus:

    - http://openminds.lucido-media.de/php-google-plus-one-count-api

    - https://github.com/macx/SocialDataGrabber

  7. Huggy Says:

    Servus Abro,

    Und auf sowas kommt man natürlich immer erst, wenn man die Zeit bereits verschwendet hat… Aber dass alle Sources ähnlich sind, kein Wunder – die API ist nur via Post ansprechbar, in PHP steht da Curl an erster Stelle. Die Parameter habt ihr vermutlich wie ich durch HTTP Header Sniffing rausgefunden, so schwierig war das ja nicht. Interessant wäre für mich noch, wie man die anderen Methoden List, Get, Post etc. verwenden kann..die existieren auch in der API :-) Der SocialDataGrabber ist ja eine praktische Sammlung *Bookmark*

  8. Bernhard Angeler Says:

    @Huggy Gute Arbeit!
    @Jan Danke für Info.

    Seit heute ist bei mir die +1 Statistik schon im Webmaster Tool verfügbar, zumindest die Funktion.

  9. Jan Königstätter Says:

    @Bernhard
    Die Daten kommen auch schon, und Google Analytics hat die Daten auch schon (in der neuen Version)

  10. Alex Stadler Says:

    Interessant dazu find ich, was das Rufzeichen zu bedeuten hat, wenn man mal einen Blick auf das Sprite-Image des +1 Buttons wirft:
    http://www.google.at/images/experiments/p1/p1sprite.png

  11. Fremdgegangen: die dieswöchigen Google-Festspiele +mehr | SEO BOOK Says:

    [...] mit dem +1-Button geht der WebmarketingBlog.at um und erklärt, wie man “Google +1 Count scrapt“. [...]

  12. Tkey Says:

    Hi, weisst du ob man auch mehrere URLs in einer Anfrage abfragen kann? Facebooks REST API kann das ja, aber hier hab ich das noch nicht hinbekommen. So muss man halt für jede URL ne neue Anfrage starten, oder geht das auch mit nur einer Anfrage?

Leave a Reply