2013-04-04 22 views

回答

5

我實現使用上述的所有點和下面鏈路 https://developers.google.com/webmasters/ajax-crawling/

http://www.yearofmoo.com/2012/11/angularjs-and-seo.html

在我的網站爬行

http://india-elections.in

建立靜態利用模板PhantomJs

+1

你用什麼來創建HTML快照? – 2013-04-05 08:48:14

+0

我手動創建了快照,手動替換腳本部分和css部分 – 2013-04-08 12:53:16

+0

我用phantomjs快照功能替換了手動創建 – 2013-04-09 08:04:07

5

唯一可行的解​​決方案,我知道是核心AngularJS團隊使用它的文檔的網站之一。

  • 首先,他們使用HTML5的歷史URL和hashbang後備。帶有hashbang的網址會讓Google在查詢字符串中使用_escaped_fragment_進行抓取。
  • 然後,他們在後端使用AngularJS字符串插值和指令來呈現模板,因爲當用戶加載頁面並由AngularJS分析頁面時,它們將在DOM中呈現。
  • 他們將這些內容傳遞給Google,因此他們在搜索索引中具有與用戶瀏覽器中相同的內容(所以這不是隱形)。

這是AngularJS Google小組的核心開發人員提到的。 [1] [2] [3]

另外從其餘的線程我認爲他們正在使用PhantomJS和NodeJS來解析頁面。

[1] https://groups.google.com/d/msg/angular/yClOeqR5DGc/4YXGx9z8EpAJ

[2] https://groups.google.com/d/msg/angular/EGwg49uAmMI/j-kj9nytT-IJ

[3] https://groups.google.com/d/msg/angular/EGwg49uAmMI/j-kj9nytT-IJ

+0

請您提供鏈接到建議 – 2013-04-04 07:56:57

+0

@Ajaybeni我找了點。直到現在我發現 - https://groups.google.com/d/msg/angular/yClOeqR5DGc/4YXGx9z8EpAJ – 2013-04-04 07:57:17

2

我碰到this service來到這可能是值得一試。它運行一個PhantomJS服務器併爲您完成所有工作。

+0

本網站上的文檔非常有限,我們應該使用基於散列的url或基於html5的url – 2013-09-05 05:47:21

1

製作單頁應用程序爬網還可以交互式並不是一項簡單的任務。您必須考慮UX視角中的訪問點,這些訪問點將允許後退按鈕,並跳入訪問。例如,按下後退按鈕時,需要在服務器上重新創建對象狀態的標記,而無需用戶交互,從而生成與訪問點將在客戶端上創建的用法相同的標記。 Phantom.js可以用於這個任務,或者客戶端/服務器不可知的js可以用於兩端運行,或者像在良好的php天那樣,整個邏輯複製訪問點的狀態可以重寫爲服務器。 @Ajay Beniwal詳細介紹瞭如何創建html快照的一些鏈接。

假設您有一個Web服務器,可以在給定特定對象狀態的情況下拋出引導標記。狀態可以通過一個狀態標識符來提供,這需要url來讓你的代碼可以被抓取。像Angular js和Backbone.js這樣的庫提供了Backbone.Router等機制,而Backbone.Router可以使用鏈接片段或HTML5 pushState()方法在客戶端上存儲狀態標識符。然而,HTML5的美妙之處在於,刷新直接調用了服務器的正確對象狀態,而無需加載解析所提供的哈希並重定向到適當的對象狀態url的初始頁面,對於舊的沒有其他選項瀏覽器,圍繞HTML5範式構建應用程序將使它們成爲抓取工具的一個蛋糕,並且大多數HTML5 pushState實現(如Backbone.Router)會優雅地降級到舊版瀏覽器的哈希標記狀態標記實現,以允許後退按鈕。