2013-02-20 112 views
2

我目前正在努力從Google獲取關鍵字建議。這是我正在使用的腳本:從谷歌搜索關鍵字建議

<?php 
function text_between($start,$end,$string) { 
    if ($start != '') {$temp = explode($start,$string,2);} else {$temp = array('',$string);} 
    $temp = explode($end,$temp[1],2); 
    return $temp[0]; 
} 
function gsscrape($keyword) { 
    $keyword=str_replace(" ","+",$keyword); 
    global $kw; 
    $data=file_get_contents('http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl=en-US&q='.$keyword); 
    $data=explode('[',$data,3); 
    $data=explode('],[',$data[2]); 
    foreach($data as $temp) { 
    $kw[]= text_between('"','"',$temp); 
    } 
} 
#simple to use, just use yourscriptname.php?keywords 

if ($_SERVER['QUERY_STRING']!='') { 
    gsscrape($_SERVER['QUERY_STRING']); 
    foreach ($kw as $keyword) { 
    gsscrape($keyword); 
    } 

//sorted and duplicates removed 
sort(array_unique($kw)); 

#all results echoed with break 
foreach ($kw as $keywords) { 
echo $keywords. "<br />"; 
} 

} 
?> 

當通過網址直接訪問谷歌會給我的關鍵字money這樣的響應:

["money",["moneygram","money network","money mutual","money trees lyrics","moneyball","moneypak","money","money converter","money order","money2india"]] 

然而,由於某些原因,當我測試在我的網站上,它只是顯示此:

moneygram 
moneygram 

什麼需要更改,以便它顯示每個這樣的關鍵字?

moneygram, money network, money mutual, money trees lyrics, moneyball, moneypak, money, money converter, money order, money2india 
+1

你應該看看http://scrape-google-suggest.compunect.com/ 這是一個開源的PHP谷歌建議即使你堅持你的代碼,我鏈接的代碼可能包含你會發現有用的函數。 – John 2014-03-30 23:35:49

回答

8

這是有效的JSON,使用json_decode,你就完成了!

var_dump(json_decode('["money",["moneygram","money network","money mutual","money trees lyrics","moneyball","moneypak","money","money converter","money order","money2india"]]')); 

edit - complete example;

<?php 

function getKeywordSuggestionsFromGoogle($keyword) { 
    $keywords = array(); 
    $data = file_get_contents('http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl=en-US&q='.urlencode($keyword)); 
    if (($data = json_decode($data, true)) !== null) { 
     $keywords = $data[1]; 
    } 

    return $keywords; 
} 

var_dump(getKeywordSuggestionsFromGoogle('money')); 
+0

我如何使用當前腳本?結果將取決於關鍵字... – user2090227 2013-02-20 08:26:43

+0

嗯,當然..你會發送你從谷歌回來的數據,並作爲輸入到你的json_decode ..這是非常簡單的東西,但我會更新完整的例子.. – hank 2013-02-20 08:28:54

+0

這將是驚人的!對不起,麻煩,只是試圖找出這個東西了第一次:) – user2090227 2013-02-20 08:32:29

2

來獲取數據作爲數組使用:

function gsscrape($keyword) { 
     return json_decode(utf8_decode(file_get_contents('http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl=en-US&q='.urlencode($keyword))),true); 
    }