Die nachfolgende PHP5 Klasse für Alexa Web Information Service liefert Informationen zu einer bestimmten URL.
Alexa ist ein Dienst, der Daten über Webseitenzugriffe durch Web-Benutzer sammelt und aufbereitet. Auf der Seite von Alexa kann dann zu jeder URL eine Abfrage gemacht werden, um detaillierte Informationen zu einer URL zu erhalten. Vergleichbar mit dem Google PageRank liefert der Alexa Rank die 100.000 meistbesuchten Domains.
Beschreibung
Die Klasse ist so konzipiert, dass die geholten Informationen in einem Array oder als XML aufbereitet und zur Verfügung gestellt werden. Weiterhin besteht die Möglichkeit für jeden Abruf einer Domain beim Alexa Webservice eine XML-Datei zu speichern, die dann mit Datum und Domainnamen gespeichert wird. Diese Datei kann durch die Klasse im nachhinein wieder eingelesen und verwertet werden.
Wie Sie sehen, können Sie mit wenigen Zeilen Programmcode für eine Domain beim Alexa Webservice alle Informationen einholen und als XML-Datei speichern.
Bitte achten Sie darauf, dass für den Alexa Webservice eine Registrierung notwendig ist. Im Verlauf der Registrierung erhalten Sie dann den öffentlichen und privaten Schlüssel, der für den Webservice von Alexa notwendig ist und den Sie in der Klasse ebenfalls eintragen müssen. http://aws.amazon.com/awis/
Die Klasse wurde unter der BSD License gestellt und kann somit für private und kommerzielle Zwecke genutzt werden.
<?php
/**
* Alexa_Api_Service (The SELFPHP Alexa_Api_Service PHP5 Class)
*
* PHP5 Class for Alexa Web Information Service
* Required: PHP 5 >= 5.1.2
*
* @package Alexa_Api_Service
* @author Damir Enseleit
* @copyright 2009, SELFPHP OHG
* @license BSD License
* @version 1.0.0
* @link http://www.selfphp.de
*
*/
/**
* @var string Speichert den XML-Output vom Webservice
*/
private $storeServiceXmlData = "";
/**
* @var string Speichert den XML-Output vom Webservice
* Folgende Parameter nicht ändern: 'aws:StatusCode', 'Code' oder 'Message' !!!
*
* Der $tagsService arbeitet sehr gut mit ContactInfo z.B.
* $tagsService mit TrafficData ist nicht möglich e.g.
*/
private $tagsService = array('aws:StatusCode','Code','Message');
private $storeServiceArrayData = array();
/**
* Constructor
*
* @param string $accessKey Access Key ID
*
* @param string $secretKey Secret Access Key
*
* @param array $responseArray Ein Array mit den Response Tags
*
*/
function __construct( $accessKey = NULL, $secretKey = NULL, $responseArray = NULL) {
// Konvertiert alle Tags in Lower Case
for ( $x = 0; $x < count( $this->tagsService ); $x++ ){
$this->tagsService[$x] = strtolower( $this->tagsService[$x] );
}
}
/**
* Definiert die Request Parameter und Response Groups
* @link http://docs.amazonwebservices.com/AlexaWebInfoService/2005-07-11/
*
* @param string $action Setzt den Action Parameter
*
* @param string $responseGroup Setzt die Response Group
*
*/
public function setRequestMode( $action, $responseGroup) {
if ( empty( $action ) || empty( $responseGroup ) ) {
$this->lastErrorMessage = "Error-Message: Request Parameters or Response Groups is empty.";
return false;
}
/**
* Liefert den XML-Output vom Webservice
*
* @return string XML-Output
*/
public function getXml() {
return $this->storeServiceXmlData;
}
/**
* Liefert ein Array der abgefragten Daten
*
* @return string XML-Output in einem Array
*/
public function getArray() {
return $this->storeServiceArrayData;
}
/**
* Holt den XML-Output von einer gespeicherten Abfrage aus einer XML-Datei
*
* @param string $path Der Pfad zu der XML-Datei
*
* @return bool true wenn Datei existiert, false falls nicht
*/
public function getStoredXmlData( $path = NULL ) {
/**
* Speichert den XML-Output in einer Datei
*
* @param string $path Der Pfad zu dem Verzeichnis ohne Slash am Ende
*
* @return string Liefert den kompletten Pfad incl. Dateiname
*/
public function saveXml( $path = 'logs' ) {
// Access Key - Ersetzen durch eigenen Key
$accessKeyId = 'AccessKey';
// Secret Access Key - Ersetzen durch eigenen Key
$secretAccessKey = 'SecretAccessKey';
// Domain für Abfrage
$site_url = 'selfphp.de';
// Aktion setzen
$action = 'UrlInfo';
// Response Group setzen
// RankByCountry wird nicht unterstützt
$responseGroup = 'Rank,ContactInfo,LinksInCount';
// Response Array setzen
// Flags können aus der XML-Datei genommen werden
$responseArray = array('aws:PhoneNumber','aws:OwnerName','aws:Street','aws:City','aws:Country','aws:Rank');
// Ergebnis als XML
$getXml = $alexa -> getXml();
echo $getXml;
echo '<br><br>';
// Ergebnis in einem Array
$getArray = $alexa -> getArray();
print_r($getArray);
echo '<br><br>';
// Speichert das XML-Ergebnis in einer Datei.
// Format ist: Date_Time_Domain.xml
// Beispiel: 2009-04-18_16-56-13_selfphp-de.xml
// saveXml('VerzeichnisPfad')
// Der Pfad zum Verzeichnis ohne Slash am Ende.
$the_xml_file_path = $alexa -> saveXml('www-selfphp-de');
echo $the_xml_file_path;