2016-02-09 78 views
0

我首先注意到結果不在從服務器接收的HTML中,因此我打開了開發工具並開始查看我的瀏覽器下載的其他文件。Google如何在搜索引擎結果頁面上呈現結果

我發現,只有一個名爲xhr要求gcosuc沒有(下載也不xml或其他數據文件)json所以我覺得代碼被嵌入在JS本身。

然後我搜索了所有通過chrome下載的.js文件,但仍無法找到搜索結果的來源。

我認爲搜索結果可能在裏面和iframe元素,因此,他們不會顯示在開發工具。考慮到這個假設,我在加載DOM後查看了由JS生成的HTML,認爲結果可能嵌入在iframe中,並且我錯了。

有沒有人知道Google如何獲取並呈現它的搜索結果?

+0

聽起來有點離題 – Gavriel

回答

1

就像我已經弄清楚的一樣,它全部使用JavaScript完成,並在您滾動時動態呈現。

Google+的工作方式類似。只有您在屏幕上看到的內容實際上是在DOM上,並且在您滾動時它們全部消失。

如果您嘗試屏幕刮擦結果,我會建議渲染到瀏覽器中,並查看生成的DOM。我使用鉻。

+0

「和滾動這一切消失了。」你是什​​麼意思? – user3790827

+0

當您滾動時,DOM元素消失和/或被可以看到的東西重用。 –

+0

你的意思是,當我向下滾動頁面時,最好的結果應該從DOM中消失。我如何看到這種情況?我試過使用開發工具,它似乎並沒有這樣工作。 – user3790827

1

做了一個快速嘗試,它確實是一個AJAX請求。 URI是/s,它傳遞GET參數,包括你搜索的內容。

響應是一種尷尬的JSON,包括文本,樣式和一些JS。這就像JSON對象,但是這個字符分隔:/*""*/

下面是一個例子(自動換,因爲線很長):

Example response

編輯我加入由谷歌提出的DevTools要求:

XHR Requests

+0

。祝你好運解釋。 –

+0

好吧,這不僅僅是Google搜索無法輕鬆解讀。任何縮小/混淆真的很難閱讀。此外,這可能適用於您可能找不到的一些關閉。如果你逃離每個''''''''''''''''''每個'''屬性',你就會得到HTML,CSS和JS。 JS不是人類可讀的,但它在那裏。 –

+0

@JoaquínO在開發工具只xhr請求我看到執行是一個與URI'/ gcosuc',收到少得多的JSON比你在屏幕截圖中顯示。在我的情況下,我看到的唯一JSON是')]}' [0,「0」,0,600,false,「gn」]'。 – user3790827