<< Zoekmachine Optimalisatie | Website Promotie | Google Sitemaps >>
Google is medio december 2006 gestopt met het 'uitdelen' van Api-keys voor de soap interface. Daarvoor in de plaats is er een javascript api, vergelijkbaar met de interface voor google-maps. De beschikbaarheid van de soap server is aardig achteruit gegaan de laatste tijd
De google-API loopt via SOAP (Simple Object Access Protocol) een op XML gebaseerd mechanisme om RPC's ( Remote procudere call ) en informatie uit te wisselen.
SOAP verloopt meestal (maar niet noodzakelijker wijs) over http.
Met Java,Visual Basic, Perl of PHP is het dan eenvoudig om rechtstreeks in google te zoeken. Een eigen zoekinterface maken is niet zinvol, zoeken gaat veel langzamer en is beperkt tot 1000 queries per dag.
Het ophalen van de top-50 sites voor bepaalde trefwoorden is echter simpel, inclusief de snpliet van google. Klaar voor analyse.
Onderstaand script zoekt voor een gegeven url en een gegeven zoekopdracht de positie in google:
(Maakt gebruik een variant op SOAP_Google en pear::soap)
<?
/* http://www.brambring.nl */
require_once"SOAP_Google.php";
$matchurl=$argv[1];
$query=strtolower(implode(" ",array_slice ( $argv , 2)));
$key = 'jouw key';
$google = new SOAP_Google($key);
for ($start=0;($start<200);$start+=10) {
print "$start start $query\n";
$result = $google->search( array( "query" => "$query",
"start" => $start ) );
if (false !== $result) {
if ( is_array($result->resultElements) ) {
$i=0;
foreach($result->resultElements as $res) {
$url=strtolower($res->URL);
if ( strstr ($url,$matchurl) ) {
$url=$res->URL;
$title=$res->title;
$snippet=$res->snippet;
$number=$start+$i+1;
print "Found $number $url\n";
exit;
}
$i++;
}
}
}
}
print "Query $query niet gevonden voor $matchurl\n";
?>
?>
Een aangepaste versie van het script afkomstig van: http://www.sebastian-bergmann.de/
<?php
//
// +----------------------------------------------------------------+
// | PHP/SOAP Interface to the Google API|
// | http://www.brambring.nl
// | tested with SOAP 0.8.1
// +----------------------------------------------------------------+
require_once "SOAP/Client.php";
class SOAP_Google {
var $_licenseKey = "";
var $_soapClient = NULL;
function SOAP_Google($licenseKey) {
$this->_licenseKey = $licenseKey;
$this->_soapClient = new SOAP_Client(
"http://api.google.com/search/beta2"
);
}
function getCachedPage($url) {
$result = $this->_performAPICall(
"doGetCachedPage",
array(
"key" => $this->_licenseKey,
"url" => $url
)
);
if ($result) {
$result = base64_decode($result);
}
return $result;
}
function getSpellingSuggestion($phrase) {
return $this->_performAPICall(
"doSpellingSuggestion",
array(
"key"=> $this->_licenseKey,
"phrase" => $phrase
)
);
}
function search($parameters = array()) {
if (!isset($parameters["query"])) {
return false;
}
return $this->_performAPICall(
"doGoogleSearch",
array(
"key"=> $this->_licenseKey,
"q"=> $parameters["query"],
"start"=> isset($parameters["start"])? $parameters["start"]: 0,
"maxResults"=> isset($parameters["maxResults"]) ?
$parameters["maxResults"] : 10,
"filter"=> isset($parameters["filter"])? $parameters["filter"]: true,
"restrict"=> isset($parameters["restrict"])? $parameters["restrict"]: "",
"safeSearch"=> isset($parameters["safeSearch"]) ?
$parameters["safeSearch"] : false,
"lr"=> isset($parameters["lr"])? $parameters["lr"]: "lang_nl",
"ie"=> isset($parameters["ie"])? $parameters["ie"]: "",
"oe"=> isset($parameters["oe"])? $parameters["oe"]: ""
)
);
}
function _performAPICall($apiCall, $parameters) {
$result = false;
$max_retries = 6;
$retry_count = 1;
while( !$result && $retry_count < $max_retries )
{
$result = $this->_soapClient->call(
$apiCall,
$parameters,
"urn:GoogleSearch"
);
if( PEAR::isError($result))
{
fwrite(STDERR, "Attempt $retry_count failed.\n");
sleep(15);
$result=false;
}
$retry_count++;
}
if (! $result) {
fwrite(STDERR,"Sorry, connection to Google failed
after retrying several times. \n");
}
return $result;
}
}
?>
<< Zoekmachine Optimalisatie | Website Promotie | Google Sitemaps >>
©