2012-01-19 72 views
6

我有一個基於JavaScript的項目(例如node.js,backbone.js等)。我正在使用hashbang urls,如/#!/ about,並閱讀了google ajax可搜索規範。我已經用殭屍做了一些無頭UI測試,並且可以輕鬆設想如何通過設置稍微的延遲並將靜態內容返回到谷歌機器人來完成此操作。但我並不想從頭開始實現,希望有一個預先存在的庫適合我的堆棧。知道一個?Googlely Ajax Crawlable Spec純粹的JavaScript解決方案

編輯:在寫作時我不認爲這存在。然而,使用服務器和客戶端的骨幹(或類似的)進行渲染是一種合理的方法(即使不是直接的答案)。所以我打算把它作爲答案,儘管未來可能會有更好的解決方案。

回答

2

有使用服務器和瀏覽器 https://github.com/Morriz/backbone-everywhere

+0

儘管我不確定我會使用這個,但它最接近於合理的答案,因爲在這個時候可能在js中沒有無頭解決方案;) – Rob

+0

請考慮這種方法http://stackoverflow.com/問題/ 9413328/loading-a-backbone-js-collection-on-html-page-load/9413380 – opengrid

10

只是幫腔,我遇到了對的Node.js和Backbone.js的一個實施這個問題(我有非常ajax/js重網站),我發現這可能是有趣的:

crawlme

我還沒有嘗試它,但它聽起來像它會使整個過程小菜一碟,如果它的廣告作品!它是連接/表達中間件的一部分,只需在頁面調用之前插入即可,並且顯然會處理其餘部分。

編輯:

嘗試過crawlme,我取得了一些成功,但後端無頭的瀏覽器,它使用(zombie.js)與一些我的javascript內容是失敗了,可能是因爲它的工作原理是emulting的DOM因此不會是完美的。

的sooo,而不是我得到了基於模擬瀏覽器,phantomjs一個完整的WebKit的保持,以及一組節點聯反應,因爲它的,就像這樣:

npm install phantomjs node-phantom 

然後我創建了類似crawlme自己的腳本,但使用phantomjs而不是zombie.js。這種方法似乎完美,並將完美呈現我的每個基於ajax的頁面。我寫下的這個腳本可以找到here。使用它,簡單地說:

var googlebot = require("./path-to-file"); 

,然後在任何其他調用您的應用程序(這是使用快遞,但應與工作只是連接過多:

app.use(googlebot()); 

源是realtively簡單減去一對夫婦的正則表達式,所以有一個gander :)

結果:AJAX沉重node.js /連接/快速基於網站可以通過googlebot進行爬網。

+0

我的爬蟲和殭屍有同樣的問題。謝謝! +1 – Dru