2012-12-13 48 views
1

我一直在嘗試編寫一個腳本來檢索給定關鍵字的Google趨勢結果。請注意,我不想做任何惡意的事情,我只是希望能夠自動化這個過程並每天運行幾次。PHP CURL - 在抓取時存儲和使用cookie的問題

調查谷歌趨勢的網頁後,我發現,信息可通過以下網址:

http://www.google.com/trends/trendsReport?hl=en-GB&q=keyword&cmpt=q&content=1

可以複式倍要求的信息與來自瀏覽器沒有問題,但如果你試圖用「隱私模式」在4或5個請求後顯示以下內容:

檢測到錯誤您已達到配額限制。請稍後再試 。

這讓我覺得餅乾是必需的。

$cookiefile = $siteurl . '/wp-content/plugins/' . basename(dirname(__FILE__)) . '/cookies.txt'; 


$url = 'http://www.google.com/trends/trendsReport?hl=en-GB&q=keyword&cmpt=q&content=1'; 
$ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1);   
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 


$x='error'; 
while (trim($x) != '' ){ 
    $html=curl_exec($ch); 
    $x=curl_error($ch); 
} 

echo "test cookiefile contents = ".file_get_contents($cookiefile)."<br />"; 
echo $html; 

但是我不能得到任何寫入我的cookies文件:所以我如下寫了我的腳本。所以我不斷收到錯誤消息。任何人都可以看到我要去哪裏錯了嗎?

+0

我在下面回答。但谷歌有很多技巧不讓人們刮掉他們的數據。它通常會返回一個錯誤,但實際上它們會阻止你。 –

+0

如果您仔細使用捲曲,Google將永遠不會知道它的人體或捲曲,除非存在驗證碼。 –

+0

'$ siteurl'的價值是什麼?這應該是一個文件系統路徑,而不是一個網址。 –

回答

0

我很確定你的cookie文件應該存在,然後才能使用curl。 嘗試:

$h = fopen($cookiefile, "x+");