2012-11-15 159 views
3

我想知道是否有可能通過matlab查詢搜索引擎。我想通過matlab獲得某個查詢的點擊量。是否可以通過Matlab查詢搜索引擎?

+4

請參閱[本文](http://blog.xkcd.com/2011/02/04/trochee-chart/)關於謹慎,你應該解釋至少返回谷歌的點擊次數。顯然他們是非常糟糕的猜測,絕對沒有好的測量。 – carandraug

回答

4

嘗試

S = urlread('https://www.google.com/search?q=test'); 

這與關鍵字「測試」查詢時,它會返回由谷歌的HTML吐出來。然後,您可以不喜歡

% search engine specific filter for no. of results 
results = regexpi(S, 'About [0-9_\,]* results', 'match'); 

% parse further or error out 
if ~isempty(results)  
    results = textscan(results{1}, '%s'); % tokenize string 
    results = str2double(results{2}); % number of results 
else 
    error('Something went wrong during the query.'); 
end 

注意urlread需要Java運行,所以很明顯與-nojvm啓動選項運行時,你不能這樣做(我第一次嘗試:)

+0

Thx爲答案。雖然仍然是一個問題。 S由html組成。但結果是空的。我將您的網址更改爲google.com。沒有什麼改變。在html中,它看起來像這個「約29.400,000,000個結果」。但是,這個:regexpi(S,'關於\ d *結果')不起作用。 – Ojtwist

+0

查看我編輯的正確'regexp'表達式。至於爲什麼urlread失敗 - 你有沒有嘗試過其他搜索引擎? –

+0

urlreads的作品,你的正則表達式也可以工作(它給了一些東西,這不等於點擊次數)。我現在得到的錯誤是在textscan上。錯誤:錯誤使用文本掃描 無效的文件標識符。使用fopen生成一個有效的文件標識符。 – Ojtwist

0

在2017b,我有要改變這一行:

results = str2double(results{2}); % number of results 

到:

results = str2double(results{1}{2}); % number of results 

作爲textscan返回單元格的單元格數組。

相關問題