suggestqueries.google unvollständig ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
agent
anfrage
array
auslese
bekommen
biene
bier
code
datum
ergebnis
format
header
http
limit
maja
output
parameter
url
versucht code
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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
-
prosuche schrieb:
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.
Kann man damit auch mehr als 10 Ergebnisse bekommen (Limit-Parameter) ?
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage