Anmelden, um zu folgen  
Folger 0
Florian

Google API PHP-Script

42 Beiträge in diesem Thema

Hallo,
wer kennt ein Google API PHP-Script!

MFG
Florian

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Um mit Google zu suchen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
;-) Hab mal eins gemacht.... am suchen... gefunden am extrahieren

Ich hoffe das funktioniert, ist alt und ich hab zusammenkopiert.

CODE

<?php
require_once("nusoap.php");

$key = ".......";
$start = 0;

$soapclient = new soapclient("http://api.google.com/search/beta2"); // [1]

$parameters = array(
   "key"         => $key,
   "q"           => $query,
   "start"       => $start,
   "maxResults"  => 10,
   "filter"      => false,
   "restrict"    => "",
   "safeSearch"  => false,
   "lr"          => "lang_de",
   "ie"          => "UTF-8",
   "oe"          => "UTF-8"
 );
$result = $soapclient->call("doGoogleSearch", $parameters, "urn:GoogleSearch");
$searchtime = $result["searchTime"];
$begin = $start + 1;
$end = $start + $parameters["maxResults"];
$total = $result["estimatedTotalResultsCount"];


for ($i = 1; $i <= $parameters["maxResults"]; $i++)
 {
  $element = $result[$i];
  $url = $element["URL"];
  $title = $element["title"];
  $snippet = $element["snippet"]; // [2]
 


  echo <a href="'.$url.'">'.$url.'</a><br>';
 }

?>


Needed File nusoap.php

QUOTE

/*

NuSOAP - Web Services Toolkit for PHP

Copyright © 2002 NuSphere Corporation

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

If you have any questions or comments, please email:

Dietrich Ayala
dietrich@ganx4.com
http://dietrich.ganx4.com/nusoap

NuSphere Corporation
http://www.nusphere.com

*/

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Kannst du es mir per E-mail schicken?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Zum Google-API ist das Buch "Google Hacks" zu empfehlen. Da gibts viele Anleitungen und Code-Schnipsel drin. Plus noch ein Kapitel für Webmaster.

Gruss, Remo

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
gibt es da auch Scripts in ASP ?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Ich habe das Buch gerade nicht zur Hand, aber ich denke es waren weder PHP noch ASP-Skripte drin, sondern eher Perl.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Ach so. Ok. Danke.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
hab scho asp scripts gesehen...

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Moin!
QUOTE
Ich hoffe das funktioniert, ist alt und ich hab zusammenkopiert.

Das tut es nicht.

Da ein mehrdimensionaler Array zurückgegeben wird, müsste der Zugriff wie folgt aussehen:

CODE

...
$searchtime = $result["return"]["searchTime"];
$begin = $start + 1;
$end = $start + $parameters["maxResults"];
$total = $result["return"]["estimatedTotalResultsCount"];


for ($i = 1; $i <= $parameters["maxResults"]; $i++)
{
 $element = $result["return"]["resultElements"][$i];

...





Das was ich da jetzt rausbekomme ist nicht gerankt.
Die ersten drei Ergebnisse sind teilweise die gleiche Seite.

Kann man irgendwie an gerankte Ergebnisse rankommen?
Bei der webmasterforum-Suche müsste doch das gleiche Problem bestanden haben, oder?

Gruß,
Ansgar

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
;-) Hast recht, ich habs aus der Funktion kopiert, die in der Schlaufe aufgerufen wird, wenigstens jemand der es auch ausprobiert hat ;-)

Es ist eigentlich schon geranked. Nur nicht fertig und es besteht ein Problem mit Duplicate Content in den Google API Suchresultaten. Siehe http://www.webmasterforum.ch/topic-2137.html

CODE
for ($i = 0; $i < count($result)-1; $i++) {
  $element = $result[$i];
  $url = $element["URL"];
  $title = $element["title"];
  $snippet = $element["snippet"]; // [2]
 
  //dublicate content:
  if ( (!$known[$url] and !$known[$title]) ) {
   $known[$title] = true;
   $known[$url]   = true;
   
   
   if ($title != "\n" && $url != "\n") {
    $tmpl = $this->res_tmpl;
    echo utf8_decode(str_replace("{url}", $url,
         str_replace("{snipplet}",
          str_replace("<br>", "", $snippet),
           str_replace("{title}", $title, $tmpl)
          )
          )
        );
    // ncrement no_of_res
   
    $this->no_of_res++;
   }
  }
 }

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
QUOTE

Es ist eigentlich schon geranked. Nur nicht fertig und es besteht ein Problem mit Duplicate Content in den Google API Suchresultaten. Siehe http://www.webmasterforum.ch/topic-2137.html


Ok, den kannte ich. Das mit den doppelten Einträgen ging nicht direkt daraus hervor.

Aber jetzt weiß ich, dass es normal ist und nicht auf einem Fehler von mir beruht.

Danke für den Code-Schnipsel.

Gruß,
Ansgar

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Hallo,

Ich hab mir eure einzelnen Teile mal zusammengebastelt, aber ein Ergebniss bekomm ich nicht??
Nur ne weisse Seite?

Könnt mir jemand das komplette Script mailen?

Danke

Chris

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
QUOTE
Ich hab mir eure einzelnen Teile mal zusammengebastelt, aber ein Ergebniss bekomm ich nicht??

Analysier mit den Funktionen print_r oder var_dump den Array, den du vom Google-Server zurückbekommen hast.
Vermutlich hast du auf nicht exisitierende Felder im Array zugegriffen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Eine dumme Frage: (auch wenn es die nicht geben soll)

Wie übergebe ich das gesuchte Wort an das Skript?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
CODE
$parameters = array(
  "key"         => $key,
  "q"           => $query,


D.h. der Wert muss vorher in $query, wenn er z.B. aus einem Formular kommt $query = $_REQUEST['query']; über dem restlichen Code.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Danke Alain,
habe den Code angepasst.
Aber es geht immer noch nicht. Bekomme im Quelltext des Browser folgendes angezeigt.
CODE

<p>query</p><hr />test<a href=></a><br><a href=></a><br><a href=></a><br><a href=></a><br><a href=></a><br><a href=></a><br><a href=></a><br><a href=></a><br><a href=></a><br><a href=></a><br>


CODE

<?php
if (isset($_POST["query"])) {
echo "<p>query</p>";
echo "<hr />";
require_once("nusoap.php");

$key = ".......";
$start = 0;

$query = $_POST['query'];

echo "$query";

$soapclient = new soapclient("http://api.google.com/search/beta2"); // [1]

$parameters = array(
"key" => $key,
"q" => "$query",
....
else {
echo "<p>query nicht übergeben</p>";
?>
<form action="<?php echo $_SERVER[´PHP_SELF´]; ?>" method="post">
<input type="text" name="query" />
<input type="submit" />
</form>
<?php
}

?>

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Hi ihr!

Tut mir Leid, wenn ich den Thread noch einmal ausgrabe, aber ich möchte Google API bei mir auch einbauen.

Ich habe also folgendes, hier genanntes, Script genommen, und es in search.php gepackt:
CODE
<?php

require_once("nusoap.php");

$key = "meingooglekey";
$start = 0;
$query = $_POST['q'];

$soapclient = new soapclient("http://api.google.com/search/beta2"); // [1]

$parameters = array(
   "key"         => $key,
   "q"           => "site:gac-portal.de $query",
   "start"       => $start,
   "maxResults"  => 10,
   "filter"      => false,
   "restrict"    => "",
   "safeSearch"  => false,
   "lr"          => "lang_de",
   "ie"          => "UTF-8",
   "oe"          => "UTF-8"
 );
$result = $soapclient->call("doGoogleSearch", $parameters, "urn:GoogleSearch");
$searchtime = $result["return"]["searchTime"];
$begin = $start + 1;
$end = $start + $parameters["maxResults"];
$total = $result["return"]["estimatedTotalResultsCount"];


for ($i = 1; $i <= $parameters["maxResults"]; $i++)
{
$element = $result["return"]["resultElements"][$i];
  $url = $element["URL"];
  $title = $element["title"];
  $snippet = $element["snippet"]; // [2]
 


  echo "<a href=$url>$url</a><br>";
 }

?>


Von einer anderen Seite wird folgendes Formular abgegeben:
CODE
<FORM method="POST" action="search.php">
<INPUT TYPE="text" name="q" size="10" maxlength="255" value="">
<INPUT type="submit" VALUE="suche">
</FORM>


Allerdings erhalte ich eine völlig weiße Seite, wenn ich das Formular abschicke und auf die search.php komme. Woran liegt das?

Bin für Hilfe sehr dankbar.

Gruß,
blue


edit: wie ich gerade gesehen habe, ist es das gleiche Problem wie bei Patzor. Auch die leeren Links.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
QUOTE
Woran liegt das?

Ja nach Deinem Feindbild ist der Verursacher bei den Amerikanern, Russen oder Chinesen zu suchen...

Was zeigt folgender Code an?

CODE
  echo "<pre>";
var_dump( $result );
echo "</pre>";

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Folgendes:
CODE
array(11) {
 ["directoryCategories"]=>
 string(1) "
"
 ["documentFiltering"]=>
 string(5) "false"
 ["endIndex"]=>
 int(0)
 ["estimateIsExact"]=>
 string(5) "false"
 ["estimatedTotalResultsCount"]=>
 int(0)
 ["resultElements"]=>
 string(1) "
"
 ["searchComments"]=>
 string(0) ""
 ["searchQuery"]=>
 string(19) "site:gac-portal.de "
 ["searchTime"]=>
 float(0.06737)
 ["searchTips"]=>
 string(0) ""
 ["startIndex"]=>
 int(0)
}


Wenn ich das Formular ausfülle findet er ebenfalls passende Einträge in der Form.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Das ist eine Erlärung für die leere Seite....

CODE
 ["estimatedTotalResultsCount"]=>
int(0)


Wenn es keine Ergebnisse gibt, kann er auch nichts anzeigen...

Du musst das also überprüfen, z.B.

CODE

....
$total = $result["return"]["estimatedTotalResultsCount"];

if ($total<=0) { // keine Resultate
echo "Leider nix da...";

}


for ($i = 1; $i <= $parameters["maxResults"]; $i++)
{
$element =....

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Ehm.. Du meinst für einen eingegeben Wert bspw. "Team Berlin" gibt es keine Eintragungen bei Google? Das ist ja nicht wahr..

Auszug aus der Suche mit deinem gegeben Code:
QUOTE
array(11) {
  ["directoryCategories"]=>
  string(1) "
"
  ["documentFiltering"]=>
  string(5) "false"
  ["endIndex"]=>
  int(10)
  ["estimateIsExact"]=>
  string(5) "false"
  ["estimatedTotalResultsCount"]=>
  int(149)
  ["resultElements"]=>
  array(10) {
    [0]=>
    array(9) {
      ["URL"]=>
      string(59) "http://www.gac-portal.de/forum/archive/index.php/t-759.html"
      ["cachedSize"]=>
      string(2) "5k"
      ["directoryCategory"]=>
      array(2) {
        ["fullViewableName"]=>
        string(0) ""
        ["specialEncoding"]=>
        string(0) ""
      }
      ["directoryTitle"]=>
      string(0) ""
      ["hostName"]=>
      string(0) ""
      ["relatedInformationPresent"]=>
      string(4) "true"
      ["snippet"]=>
      string(185) "[Archiv] Swat Team Berlin Team-Vorstellung. ... VollstÃ&curren;ndige Version anzeigen :
  Swat Team Berlin. Dswjust. 08.04.2005, 19:52 . ..."
      ["summary"]=>
      string(0) ""
      ["title"]=>
      string(51) "Swat Team Berlin [Archiv] - GAC-Forum"
    }

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Danke für die Hilfe erstmal. Neuer Tag, neues Glück..

Wenn ich eine Suchanfrage mit dem Formular mache und auf der search.php lande, dann wird in der ersten Zeile "Leider nix da.." angezeigt. Allerdings sieht man durch das
CODE
 echo "<pre>";
var_dump( $result );
echo "</pre>";
, dass es schon Ergebnisse gibt? S.o.

Tut mir Leid für solche Fragen, aber ich verstehe es wirklich nicht.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstellen Sie einen Account oder melde Sie sich an um kommentieren zu können

You need to be a member in order to leave a comment

Create an account

Registrieren Sie einen neuen Account in unserer Community. Es ist einfach!


Register a new account

Anmelden

Haben Sie bereits einen Account? Dann melden Sie sich hier an.


Jetzt Anmelden
Anmelden, um zu folgen  
Folger 0