使用Angular.js構建單頁應用程序,我的問題是如何使應用程序可以抓取,因爲路由是在客戶端使用ng-view處理的,而服務器只是返回簡單的頭文件。如何使Angularjs應用程序可爬行
站點鏈接:http://india-elections.in/
使用Angular.js構建單頁應用程序,我的問題是如何使應用程序可以抓取,因爲路由是在客戶端使用ng-view處理的,而服務器只是返回簡單的頭文件。如何使Angularjs應用程序可爬行
站點鏈接:http://india-elections.in/
我實現使用上述的所有點和下面鏈路 https://developers.google.com/webmasters/ajax-crawling/
http://www.yearofmoo.com/2012/11/angularjs-and-seo.html
在我的網站爬行建立靜態利用模板PhantomJs
唯一可行的解決方案,我知道是核心AngularJS團隊使用它的文檔的網站之一。
_escaped_fragment_
進行抓取。這是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
請您提供鏈接到建議 – 2013-04-04 07:56:57
@Ajaybeni我找了點。直到現在我發現 - https://groups.google.com/d/msg/angular/yClOeqR5DGc/4YXGx9z8EpAJ – 2013-04-04 07:57:17
我碰到this service來到這可能是值得一試。它運行一個PhantomJS服務器併爲您完成所有工作。
本網站上的文檔非常有限,我們應該使用基於散列的url或基於html5的url – 2013-09-05 05:47:21
製作單頁應用程序爬網還可以交互式並不是一項簡單的任務。您必須考慮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)會優雅地降級到舊版瀏覽器的哈希標記狀態標記實現,以允許後退按鈕。
自2015年10月以來,爲了使您的應用程序可以抓取(我假設您指的是Google抓取),您無需執行任何操作。
檢查這篇文章:
https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html
你用什麼來創建HTML快照? – 2013-04-05 08:48:14
我手動創建了快照,手動替換腳本部分和css部分 – 2013-04-08 12:53:16
我用phantomjs快照功能替換了手動創建 – 2013-04-09 08:04:07