2010-04-01 179 views
4

是否可以使用PHP提取搜索結果的總數來搜索Google搜索結果頁面?谷歌搜索:以PHP結果頁面爲總結果

如果是這樣,我該怎麼做呢?

感謝

+1

我覺得這是對服務條款的規定;) – 2010-04-01 13:07:28

+1

谷歌提供可以通過PHP中使用的搜索API。從未使用過,但可能獲得全部搜索結果:http://code.google.com/apis/ajaxsearch/documentation/#fonje_snippets – mre 2010-04-01 13:14:50

+0

如果您連續數次搜索結果,Google可能會阻止你的IP。如果你打算定期這樣做,那麼你將不得不通過代理或限制每小時的連接數量 – Chris 2010-04-01 13:27:32

回答

5

這個PHP類做的:http://www.phpclasses.org/browse/package/3924.html

「這個類可以用來獲取結果給出 谷歌搜索查詢的 總數

它訪問。 Google搜索網站以 執行查詢爲給定搜索條件 。

該類解析結果頁面,並提取給定搜索查詢返回的結果總數 。「

6

嘗試這種使用phpsimplehtmlparser

$search_query = 'google'; 
$url = sprintf('http://www.google.com/search?q=%s', $search_query); 
$html = file_get_html($url); 
$results = $html->find('#resultStats/b', 2)->innertext; 

echo sprintf('Google found %s results for "%s"', $results, $search_query); 
2

你需要一羣取決於你打算髮送請求的數量代理。 您可以每天發送約500個請求和IP /代理,而不會造成麻煩或檢測到。

您應該閱讀google-rank-checker.squabbel.com文章,其中包含PHP中的全功能刮板。使用該刮板,將其修改爲您的要求並添加phpsimplehtmlparser(另一個答案)的代碼以獲取關鍵字的總點擊量信息。

我建議使用libCURL來訪問Google本身。 與使用更簡單的API相比,您將擁有更多的選擇,因爲Google很快就會阻止您的腳本,所以您不會對file_get_html()或類似的php內部函數有太多樂趣。

事情是這樣的:

curl_setopt ($ch, CURLOPT_HEADER, 0); 
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER , 1); 
    $curl_proxy = "$IP:$PORT"; 
    curl_setopt($ch, CURLOPT_PROXY, $curl_proxy); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 20); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en; rv:1.9.0.4) Gecko/2009011913 Firefox/3.0.6"); 
    $url = sprintf('http://www.google.com/search?q=%s', $keyword); 
    curl_setopt ($ch, CURLOPT_URL, $url); 
    $htmdata = curl_exec ($ch); 

現在只需要使用正則表達式()/ SUBSTR()/的strstr()來抓住從$ htmldata

1

的數據我使用這個PHP腳本來找出我的名字在google搜索中的總結果。在上述

我的名字定義的路徑

<?php
$homepage = file_get_contents('http://www.google.co.in/search?ix=nh&sourceid=chrome&ie=UTF-8&q=Mohit+dabas');
preg_match('/(About)?([\d,]+) result/si', $homepage, $p) ;
echo $p[0];
?>

主要的事情要注意的是「& Q」參數包含空格,因此瀏覽器增加了「+」,以它

所以你應該檢查你的查詢(即& q)的參數,如果你的查詢包含一些特殊的

字符like。,:,%等,那麼你應該注意他們是如何處理的瀏覽器a nd

更改參數acc。到你的需要int腳本。

srry對於英文不好