2017-01-02 5 views
0

Ich habe einige alte Antworten auf Stackoverflow geschaut, aber sie sind alle veraltet und die API, die sie verwendeten, ist nicht mehr verfügbar.Google Suchergebnisse mit PHP ausgeben?

Ich habe eine JSON/Atom-API, CX-Schlüssel erstellt und ein Skript verwendet. Dank Adam Fischer habe ich hier gefunden, aber wenn ich versuche, kann ich nun die Ergebnisse auf der Seite ausdrucken Fehler:

Notice: Undefined property: stdClass::$responseData in E:\XAMPP\htdocs\PHP Training\google.php on line 19

Notice: Trying to get property of non-object in E:\XAMPP\htdocs\PHP Training\google.php on line 19

Das ist, was ich bisher haben. unter dem Code.

$url = 'https://www.googleapis.com/customsearch/v1?key=[MY API KEY]&cx=[MY CX KEY]&q=lecture'; 

$body = file_get_contents($url); 
$json = json_decode($body); 

for($x=0;$x<countif ($json->responseData->results);$x++>items){ 

echo "<b>Result ".($x+1)."</b>"; 
echo "<br>URL: "; 
echoforeach ($json->responseData->results[$x]->url; 
echo>items "<br>VisibleURL:as ";$item){ 
echo $json->responseData->results[$x]->visibleUrl; 
echo "<br>Title: "; 
echo $json->responseData->results[$x]->title; 
echo "<br>Content: ";print_r($item) 
echo $json->responseData->results[$x]->content; 
echo "<br><br>"; } 
} 

Die API korrekt funktioniert, weil, wenn ich zu Besuch dies alles in einem Array ausspuckt. Beispiel: dl.dropboxusercontent.com/u/47731225/sample.txt

Ich versuche, die $ url ich sehe Ergebnisse wie auf meiner Seite wie eine Google-Suche angezeigt werden, zum Beispiel: prntscr.com/ drum5u

{ 
    "kind": "customsearch#result", 
    "title": "The Tank, Haydon Allen Lecture Theatre, Building 23, ANU", 
    "htmlTitle": "The Tank, Haydon Allen \u003cb\u003eLecture\u003c/b\u003e Theatre, Building 23, ANU", 
    "link": "https://www.google.com/mymaps/viewer?mid=1YGFZHcZ20jPvy5OiaKT1voy841Q&hl=en", 
    "displayLink": "www.google.com", 
    "snippet": "\"The Tank\", Haydon Allen Lecture Theatre, Building 23, The Australian National \nUniversity (ANU), Canberra, Australia.", 
    "htmlSnippet": "&quot;The Tank&quot;, Haydon Allen \u003cb\u003eLecture\u003c/b\u003e Theatre, Building 23, The Australian National \u003cbr\u003e\nUniversity (ANU), Canberra, Australia.", 
    "cacheId": "hTeucZ5TewoJ", 
    "formattedUrl": "https://www.google.com/mymaps/viewer?mid...hl=en", 
    "htmlFormattedUrl": "https://www.google.com/mymaps/viewer?mid...hl=en", 
    "pagemap": { 
    "cse_thumbnail": [ 
    { 
     "width": "221", 
     "height": "228", 
     "src": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSntx5YhQgJQeJ6RAZajOx7SGOwh0oUu8jtpY6VOAS75V_oNkiXx923ro4" 
    } 
+1

http://stackoverflow.com/questions/14055197/how-to-get-all-google-search-results-using-api –

+1

Sobald Sie eine Frage erstellen , bieten Sie eine Prämie an und erhalten Sie eine Antwort, die Sie als richtig anerkennen. Ändern Sie die Frage nicht in eine neue. Akzeptieren Sie die hilfreiche Antwort, wenn sie korrekt ist (oder markieren Sie, warum sie nicht korrekt ist), und erstellen Sie eine neue Frage für die neuen Informationen, die Sie benötigen. Sonst ist die Geschichte für andere Benutzer nicht hilfreich (Frage und Antwort stimmen nicht überein) und Sie geben dem Benutzer nicht, der ihre gerechte Belohnung beantwortete ... – Robbie

+0

Danke, dass Sie mich Robbie wissen lassen. Ich habe alles wieder so verändert, wie es sein sollte. – squidg

Antwort

2

Haben Sie schauen durch die zurück json von API das Ergebnis anzeigen ? Meine Vermutung ist, dass es ganz anders ist, von dem, was man erwarten

https://developers.google.com/custom-search/json-api/v1/reference/cse/list

Nach clarifiacation Sehen Sie, Sie führen ist wirklich anders aus, was Ihr Code erwartet.

Korrekter Code sollte wie folgt aussehen

$url = 'https://www.googleapis.com/customsearch/v1?key=[MY API KEY]&cx=[MY CX KEY]&q=lecture'; 

$body = file_get_contents($url); 
$json = json_decode($body); 
if ($json->items){ 
    foreach ($json->items as $item){ 
     print_r($item); 
    } 
} 
+0

Ich kann die Rückgabe JSON von API, wenn ich direkt auf die URL gehen, aber ich bin nicht ganz sicher, wie diese Daten zu greifen und auf meiner Seite anzuzeigen – squidg

+0

können Sie zurückgegebene JSON irgendwo für mich zu betrachten? –

+0

https://dl.dropboxusercontent.com/u/47731225/JSON.txt – squidg

1

Sie die Datei erhalten Inhalt verwenden können, den vollen Seiteninhalt des google zu erhalten, und Sie können in Ihrer Website wie

function file_get_contents_curl($url) { 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser. 
    curl_setopt($ch, CURLOPT_URL, $url); 

    $data = curl_exec($ch); 
    curl_close($ch); 

    return $data; 
} 

$query = "search term"; 
$url = 'http://www.google.co.in/search?q='.urlencode($query).''; 
$scrape = file_get_contents_curl($url); 
+1

Wie Ihre Antwort – mghhgm

+0

Wenn Sie die oben genannte Methode verwenden, seien Sie darauf vorbereitet, schnell von Google auf die schwarze Liste gesetzt zu werden, da dies streng gegen ihre TOS ist. –