2013-10-30 104 views
7

我讀關於谷歌的規格約AJAX檢索; 我理解這個概念,但我需要一些更多的澄清:使灰燼應用抓取

我的網址都是這樣:

http://www.website.com/#!/eng/home 
http://www.website.com/#!/eng/contacts 
... 

我必須在這些地址提供HTML快照:

http://www.website.com/?_escaped_fragment_=/eng/home 
http://www.website.com/?_escaped_fragment_=/eng/contacts 
... 

這是正確?或者我應該刪除「escaped_fragment」URL中的「/」(例如http://www.website.com/?_escaped_fragment_=eng/home或其他東西?)

我使用phantomjs生成HTML快照,但是哪一個是將這些快照提供給爬蟲的最佳方式?使用節點js?使用htaccess重寫規則?

回答

5

好了,因爲我終於擺脫了這一點,我想和大家分享我發現的方式;

首先是所有的HTML快照必須在這些

?_escaped_fragment_= 

正在取代

#! 

特定的URL所以,如果你有可以提供給爬蟲:

http://www.website.com/#!/eng/home 

您服務器必須提供快照:

http://www.website.com/?_escaped_fragment_=/eng/home 

如果有人對我用來生成快照的方法感興趣,我簡單地使用稱爲柔道的節點模塊(https://npmjs.org/package/judo); 爲了使用這個,你需要對你的服務器phantomjs(http://phantomjs.org/)和節點(http://nodejs.org/); (有關如何在服務器上安裝phantomjs的更多信息:How can I setup & run PhantomJS on Ubuntu?)(前judo.js)

一旦你已經安裝了一切,你只需要使用柔道寫一個js文件(以下,我已經鏈接的文檔頁面在你準備5分鐘之前);將文件上傳到服務器上並使用節點執行以創建快照和站點地圖;

在此之後,你需要服務於谷歌的與HTML快照抓取時,他問_escaped_fragment_ =網址嗎?;在我看來最簡單的方法是通過.htaccess文件;特別是你只需要3行代碼,在我的情況是:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/(.*)$ 
RewriteRule ^$ /seo/snapshots/%1\.html [L] 

(因爲我judo.js文件創建快照/ SEO /快照目錄)

最後,您可以檢查使用谷歌網站管理員工具面板中的「作爲谷歌獲取」選項,一切正常;如果你做了所有正確的,你會看到的結果是HTML快照...

+0

還有一件要考慮的事情是_escaped_fragment_將被urlencoded,因此需要解碼以創建phantomjs的'漂亮url'渲染。我最近推出了crawlspa.com,它提供了一切服務。 – DanS

1

一般我不建議用一種有償服務回答SO職位,但在這種情況下想你確實應該考慮使用BromBone - http://www.emberjsseo.com

+0

感謝您的建議,但我想學習這一點;從頭開始,一步一步我瞭解如何創建快照,現在我想擺脫這最後一步的... –

+0

甚至https://prerender.io/也很不錯,我覺得它也是免費的 – wallop