我一直在撰寫一個從網絡搜索中提取數據的程序。爲了獲得更多的數據,理想情況下,我希望提取更多的結果每個查詢(讓我們說100左右)。通過網址獲取每頁更多搜索結果
我的問題是,有沒有辦法修改Google,Yahoo或Bing(首選順序)的URL,以便每個查詢可以獲得10個以上的結果?
對於谷歌,追加&num=99
用在一個點上工作,但不再工作:( 我看到的&count=50
中添加類似的但沒有在任何搜索引擎的工作之一。
我一直在撰寫一個從網絡搜索中提取數據的程序。爲了獲得更多的數據,理想情況下,我希望提取更多的結果每個查詢(讓我們說100左右)。通過網址獲取每頁更多搜索結果
我的問題是,有沒有辦法修改Google,Yahoo或Bing(首選順序)的URL,以便每個查詢可以獲得10個以上的結果?
對於谷歌,追加&num=99
用在一個點上工作,但不再工作:( 我看到的&count=50
中添加類似的但沒有在任何搜索引擎的工作之一。
我不不知道你使用的是什麼編程語言,但總體思路是用正確的cookie設置加載谷歌搜索頁面(這就是他們在寫這篇文章時的存儲方式)
你可以設置,然後在谷歌瀏覽器中查看Cookie爲避免不必要的Cookie,首先打開一個新的隱身窗口(Ctrl + Shift + N),並導航到搜索設置(https://www.google.com/preferences)。
在撰寫本文時,您需要選中「從不顯示即時結果」,然後將「每頁結果」的滑塊調整爲所需的值。點擊底部的「保存」後,您現在可以通過打開開發者控制檯查看您的Cookie(Ctrl + Shift + J),並導航到資源選項卡。
同樣,在撰寫本文時,Google設置了兩個變量:NID
和PREF
。 PREF
是我們感興趣的搜索結果更改。什麼它可能看起來像一個例子:
ID=8155cce71859f7d0:U=fe6e69e174148b7b:FF=0:LD=en:NR=40:TM=1379366492:LM=1379366586:SG=2:S=FoybwBhek8noyp0t
(此鍵取40分的結果通過NR=40
所示)
使用該鍵(PREF
)和價值爲它(如上所示),您可以發送當通過wget,curl等請求頁面時,在我最近的項目中,我使用node和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使用什麼。
將&n=100
添加到鏈接。獲取頁,100個結果
原因num=99
不工作的谷歌是因爲沒有使用num
參數的實際值,而是相比於允許值的列表。
允許的值是10,20,30,40,50和100。此字段的任何其他值都將被忽略。
對於Bing,參數是count=##
其中##可以是1-100之間的任何值。
對於雅虎,參數是n=##
其中##可以是1-100之間的任何值。
在大多數情況下,僅當用戶未指定要在搜索引擎的搜索設置中顯示的搜索結果數時,URL參數纔有效。否則,該cookie將優先。
不工作在Bing上了 –
我只是用一些隨機數測試,它工作得很好: 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
呃,你是對的!它只在我的「私人標籤」中工作,而不是在我的公開會話中。也許是一個cookie。感謝您再次檢查。 –
此問題屬於[Web Applications SE](http://webapps.stackexchange.com/)。 – unor