2013-07-15 50 views
2

我一直在撰寫一個從網絡搜索中提取數據的程序。爲了獲得更多的數據,理想情況下,我希望提取更多的結果每個查詢(讓我們說100左右)。通過網址獲取每頁更多搜索結果

我的問題是,有沒有辦法修改Google,Yahoo或Bing(首選順序)的URL,以便每個查詢可以獲得10個以上的結果?

對於谷歌,追加&num=99用在一個點上工作,但不再工作:( 我看到的&count=50中添加類似的但沒有在任何搜索引擎的工作之一。

+0

此問題屬於[Web Applications SE](http://webapps.stackexchange.com/)。 – unor

回答

1

我不不知道你使用的是什麼編程語言,但總體思路是用正確的cookie設置加載谷歌搜索頁面(這就是他們在寫這篇文章時的存儲方式)

你可以設置,然後在谷歌瀏覽器中查看Cookie爲避免不必要的Cookie,首先打開一個新的隱身窗口(Ctrl + Shift + N),並導航到搜索設置(https://www.google.com/preferences)。

在撰寫本文時,您需要選中「從不顯示即時結果」,然後將「每頁結果」的滑塊調整爲所需的值。點擊底部的「保存」後,您現在可以通過打開開發者控制檯查看您的Cookie(Ctrl + Shift + J),並導航到資源選項卡。

同樣,在撰寫本文時,Google設置了兩個變量:NIDPREFPREF是我們感興趣的搜索結果更改。什麼它可能看起來像一個例子:

ID=8155cce71859f7d0:U=fe6e69e174148b7b:FF=0:LD=en:NR=40:TM=1379366492:LM=1379366586:SG=2:S=FoybwBhek8noyp0t 

(此鍵取40分的結果通過NR=40所示)

使用該鍵(PREF)和價值爲它(如上所示),您可以發送當通過等請求頁面時,在我最近的項目中,我使用requests library

這裏是(從請求文檔修改例)你可以如何去獲取谷歌的頁面40分的結果片段:

var j = request.jar(); 
var cookie = request.cookie('PREF=ID=8155cce71859f7d0:U=fe6e69e174148b7b:FF=0:LD=en:NR=40:TM=1379366492:LM=1379366586:SG=2:S=FoybwBhek8noyp0t'); 
j.add(cookie); 
request({url: 'https://www.google.com/search', jar: j}, 
function(error, response, body) { 
    // do something with the body (html) of the page! 
}); 

還是看看man頁面wget的/捲曲。我知道wget指定了一個可以使用的--load-cookies標誌。

您可以將其應用於任何其他基於Cookie的網站,您需要的內容。雅虎使用基於cookie的設置 - 我不確定Bing使用什麼。

1

&n=100添加到鏈接。獲取頁,100個結果

5

原因num=99不工作的谷歌是因爲沒有使用num參數的實際值,而是相比於允許值的列表。

允許的值是10,20,30,40,50和100。此字段的任何其他值都將被忽略。

對於Bing,參數是count=##其中##可以是1-100之間的任何值。

對於雅虎,參數是n=##其中##可以是1-100之間的任何值。

在大多數情況下,僅當用戶未指定要在搜索引擎的搜索設置中顯示的搜索結果數時,URL參數纔有效。否則,該cookie將優先。

+1

不工作在Bing上了 –

+1

我只是用一些隨機數測試,它工作得很好: http://www.bing.com/search?q=cats&count=1 http://www.bing.com/search?q = cats&count = 13 http://www.bing.com/search?q=cats&count=75 – Hiteklife

+1

呃,你是對的!它只在我的「私人標籤」中工作,而不是在我的公開會話中。也許是一個cookie。感謝您再次檢查。 –

相關問題