2

幾年來,Google抓取工具可以在SPA網站上運行JavaScript,以便爲網站的內容建立索引。但是社交網絡(如推特,臉書等等)卻沒有。社交網絡可以在索引時運行JavaScript嗎?

順便說一句,我看到this網站使用AngularJS(版本1.x,所以沒有Angular通用)。它採用路由和所有的meta標籤都是這樣的(你可以看到在網頁源代碼的人):

<title>{{$meta.title}}</title> 

但社交網絡能夠使它們(在Twitter和電報信使測試)。

任何想法如何這是可能的?社交網絡運行JavaScript嗎?

+0

你的觀察是正確的。您需要做的是確定社交網絡用戶代理,並確保您向其顯示頁面的渲染版本,或使用Open Graph標記顯示任何簡化的結構(但僅適用於**社交網絡爬蟲**不適用於GoogleBot ) –

+0

@AlonEitan我該如何做到這一點? –

回答

3

不幸的是,社交網絡仍然不能在SPA頁面上運行javascript。

你可以做一個簡單的測試來模擬Facebook的抓取工具並檢查你鏈接的網站在底層做了什麼。當User-Agent與其中一個社交爬蟲連接時(例如Facebook的facebookexternalhit/1.1),頁面看起來就會返回另一個響應。

你可以在你的終端運行以下命令通過檢查自己:

curl -A "facebookexternalhit/1.1" <page address> 

你的頁面鏈接返回結果,看起來像它呈現在服務器端:

響應Chrome瀏覽器的User-Agent:對於Facebook履帶的User-Agent

[...] 
<meta name="description" content="{{$meta.description}}"> 
[...] 

響應:

[...] 
<meta name="description" content="Login4 is a beautiful Login component for your Ionic app. This template contains Intro, Walkthrough, Login and Sign up screens."> 
[...] 

即使角1.x中不支持服務器端渲染還有另一種方法 - 使用一個真正的瀏覽器渲染頁面,保存HTML輸出,併爲爬蟲一個「緩存」的版本。如果HTTP服務器識別爬網程序的用戶代理程序,它會將來自另一個目錄的文件作爲響應發送。

+0

非常好的描述。謝謝。我通過捲曲測試。對於Facebook爬蟲,它呈現並顯示結果。有沒有這樣做的教程?或者你在答案的最後提到了什麼? –

+0

@vahidnajafi我一直在做這樣的事情,所以我可以爲您提供一些文檔,並寫有關配置服務器,並自動:) –

+0

如果可能的話,我將不勝感激。我能做什麼? –