kostenloser Webspace werbefrei: lima-city


suggestqueries.google unvollständig ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    prosuche

    prosuche hat kostenlosen Webspace.

    Hallo

    wenn ich die Google Suggestions abfrage mit "bie" als Such-String

    XML ---> Google Suggest "bie" Abfrage
    JSON ---> Google Suggest "bie" Abfrage

    kommt im Browser als Ergebnis: bienenstich, bielefeld, biene maja, bier, etc ..

    aber wenn ich die Datei per PHP auslese (egal ob json oder xml)
    ... dann kommt kein Ergebnis / leer ?!

    Test-CODE:

    <?php 
    // --------------------------------------------------------- 
    
    header("Cache-Control: no-cache, must-revalidate" ); 
    header("Pragma: no-cache" );
    header("Content-Type: text/html; charset=utf-8");
    
    // --------------------------------------------------------- 
    
    
    if (isset($_REQUEST['search']) && $_REQUEST['search'] != '') { 
    $go_search = trim($_REQUEST['search']);
    }
    else { 
    $go_search = ''; 
    }
    
    // --------------------------------------------------------- 
    
    print "<br />\n"; 
    print "<br />\n"; 
    
    print '
    <form name="form1" method="post" action="">
      Suche: <input type="text" name="search" value="'.$go_search.'" size="30" maxlength="100" />
      OK: <input type="submit" name="Abschicken" value="SUCHEN" />
    </form>
    '; 
    
    print "<br />\n"; 
    print "<br />\n"; 
    
    // --------------------------------------------------------- 
    
    if (!empty($go_search)) { 
    
    $search = $go_search;
    
    print "<h2>".$go_search."</h2>\n"; 
    
    print "<br />\n"; 
    print "<br />\n"; 
    
    // -------------------------------------- 
    
    $url_json = 'http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl=de-DE&q='.$search.''; 
    
    print "<br />URL: <a href=\"".$url_json."\" target=\"_blank\">JSON</a> \n";
    print "<br />\n";
    
    $strg_json = file_get_contents($url_json);
    $data_json = json_decode($strg_json, true); 
    
    print "<pre style=\"margin:16px 8px; padding:4px; text-align:left; background:#DEDEDE; color:#000099;\">\n";
    print_r($data_json); 
    print "</pre>\n";
    
    print "<br />\n";
    print "<br />\n";
    
    // -------------------------------------- 
    
    $url_xml = 'http://suggestqueries.google.com/complete/search?output=toolbar&client=toolbar&hl=de-DE&q='.$search.''; 
    
    print "<br />URL: <a href=\"".$url_xml."\" target=\"_blank\">XML</a> \n";
    print "<br />\n";
    
    $data_xml = simplexml_load_file($url_xml); 
    
    print "<pre style=\"margin:16px 8px; padding:4px; text-align:left; background:#DEDEDE; color:#000099;\">\n";
    print_r($data_xml); 
    print "</pre>\n";
    
    print "<br />\n";
    print "<br />\n";
    
    }
    // --------------------------------------------------------- 
    ?>

    ? ... gibt es da noch irgedwelche Parameter die man setzen muss
    oder warum komen im Script manchmal einfach gar keine Suggestions ... ?
    ... mach ich da irgendwas falsch ?!?

    + Welche Alternativen gibt es zu Google Suggestions ?



    Beitrag zuletzt geändert: 13.10.2013 16:05:29 von prosuche
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m******e

    prosuche schrieb:
    wenn ich die Datei per PHP auslese (egal ob json oder xml)
    ... dann kommt kein Ergebnis / leer ?!
    Seltsam, denn mit
    hl=en-US
    funzt Dein Script, währenddessen es mit
    hl=de-DE
    seinen Dienst versagt.

    > Beispiel <

    Beitrag zuletzt geändert: 13.10.2013 19:36:56 von menschle
  4. Autor dieses Themas

    prosuche

    prosuche hat kostenlosen Webspace.

    Hallo

    ja echt komisch, denn bei direktem Aufruf mit Browser (FF) am PC bekommt man ja die Daten

    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0


    also denke ich, es könnte am User-Agent liegen

    also ... zuerst habe ich es mit stream_context_create() versucht

    $useragent = $_SERVER['HTTP_USER_AGENT']; 
    $header_str = 	"User_Agent: ".$useragent."\r\n"; 
    			
    $context_get = stream_context_create(array(
    	'http' => array(
    		'method'  => 'GET',
    		'header'  => $header_str, 
    	),
    ));
    
    $search = 'bie'; 
    $url_json = 'http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl=de-DE&q='.$search.''; 
    
    $strg_json = file_get_contents($url_json, false, $context_get); 
    $data_json = json_decode($strg_json, true); 
    
    print "<pre style=\"margin:16px 8px; padding:4px; text-align:left; background:#DEDEDE; color:#000099;\">\n";
    print_r($data_json); 
    print "</pre>\n";


    aber damit weiterhin keine Daten bekommen ...

    Habe ich das stream_context_create() irgendwie falsch gemacht
    oder muss man noch andere Header-Angaben machen ?


    ... dann habe ich es mit curl versucht
    function get_data($url) { 
    
    	$user_agent = $_SERVER['HTTP_USER_AGENT']; 
    
    	$ch = curl_init();
    	$timeout = 5;
    	curl_setopt ($ch, CURLOPT_URL, $url);
    	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    	curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent); 
    	curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    	$data = curl_exec($ch);
    	curl_close($ch);
    	
    	return $data;
    }
    
    $search = 'bie'; 
    $url_json = 'http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl=de-DE&q='.$search.''; 
    
    $strg_curl = get_data($url_json); 
    $data_curl = json_decode($strg_curl, true); 
    
    print "<pre style=\"margin:16px 8px; padding:4px; text-align:left; background:#DEDEDE; color:#000099;\">\n";
    print_r($data_curl);
    print "</pre>\n";


    ... und siehe da ... mit CURL kommen die Daten auch im Script an

    Array
    (
        [0] => bie
        [1] => Array
            (
                [0] => bielefeld
                [1] => bienenstich
                [2] => biene maja
                [3] => bienen
                [4] => bier
                [5] => bien zenker
                [6] => bier kalorien
                [7] => bierkönig
                [8] => biergarten münchen
                [9] => bierbörse
            )
    
    )


    also mit curl und User-Agent geht es, ... was war "falsch" bei stream_context_create()
    bzw. funktioniert das überhaupt, damit einen User-Agent mit zu senden bei GET Abfrage ?

    weitere Fragen dazu:

    Kann man damit auch mehr als 10 Ergebnisse bekommen (Limit-Parameter) ?

    und ... Welche Alternativen zu diesem Google Suggestions gibt es ?
    bei Yahoo nichts gefunden, bzw nur BOSS Api die aber Geld kostet :(


    Beitrag zuletzt geändert: 14.10.2013 1:16:02 von prosuche
  5. prosuche schrieb:
    ... Welche Alternativen zu diesem Google Suggestions gibt es ? ...


    BING: (JSON) http://api.bing.com/osjson.aspx?query=bie&Market=de-DE (Test mit "bie")

    ... wäre eine Alternative bzw. eine Ergänzung.

    sonst evtl auch http://www.openthesaurus.de ist zwar kein Suggestion Service
    aber findet evtl auch passende Begriffe ... (XML) Test mit "bie" ... siehe: "startswithterms"
    Das geht auch mit JSON ... &format=application/json ... siehe OpenThesaurus API Doku

  6. m******e

    prosuche schrieb:
    Kann man damit auch mehr als 10 Ergebnisse bekommen (Limit-Parameter) ?
    Ja, aber nicht über den Limit-Parameter num=. Der ist nur im Bereich zwischen 1 - 10 Ergebnisse pro Anfrage einstellbar. Mehr Suchergebnisse sind nur über weitere Anfragen möglich, die dann allerdings vom Kontingent abgezogen werden.

    Die benutzerdefinierte Suche von Google und Google Site Search geben jeweils bis zu 10 Suchergebnisse pro Anfrage zurück. Wenn Sie für den Nutzer mehr als 10 Ergebnisse darstellen möchten, können Sie mithilfe der Parameter start=0, start=11... Mehrfachanfragen erstellen und die Ergebnisse auf einer Seite anzeigen. Google zählt in diesem Fall jede Anfrage als separate Suchanfrage, d. h., wenn Sie Google Site Search verwenden, wird jede Anfrage von Ihrem Kontingent abgezogen.
    https://support.google.com/customsearch/answer/1361951?hl=de

    Das kostenlose Kontingent liegt derzeit bei 100 Anfragen pro Tag; weiteres Kontingent ist zubuchbar.
    https://developers.google.com/custom-search/json-api/v1/overview (Pricing)

    Die API 1.x ist als "deprecated" eingestuft, also lohnt es sich nicht, in diese Richtung weiterzuentwickeln.
    Besser ist, lieber gleich auf API 2.0 umzusteigen, damit man sich späteres Angepasse erspart.
    https://developers.google.com/custom-search/docs/element

    Beitrag zuletzt geändert: 17.10.2013 12:44:53 von menschle
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!