2014-12-06 52 views
0

我想知道如何解析一個使用angularjs作爲其前端框架的網站。如何解析使用angularjs的網站?

以下代碼解析http://www.pluralsight.com/courses/using-stackoverflow-stackexchange-sites以獲取課程標題。

我得到的是{{course.title}}而不是實際的課程名稱。任何人都可以給我一些建議嗎?

require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::HTML(open("http://www.pluralsight.com/courses/using-stackoverflow-stackexchange-sites")) 
title = doc.css("h1").first.text 
puts title  # => {{course.title}} 
+0

如果網站已經適當的SEO設置可以嘗試通過谷歌AJAX搜索文檔所概述找到適當的'_escaped_fragment_'路徑。或者可以使用無頭瀏覽器 – charlietfl 2014-12-06 15:58:00

回答

1

谷歌有關於如何設置搜索引擎優化Ajax驅動的網站很好的文檔。有問題的網站遵循了這些準則。

使用該頁面爲路徑的<base>標籤引用您可以使用此路徑訪問渲染HTML:

http://www.pluralsight.com/courses?_escaped_fragment=/using-stackoverflow-stackexchange-sites 

參考:Google Ajax Crawling Spec

作爲替代方案,你可以使用模擬瀏覽器呈現網頁並使用它作爲您的源

+0

您好查理,我試圖使用您提供的我的演示代碼的網址,仍然有同樣的結果。有什麼我錯過了嗎? – 2014-12-06 19:23:41

+0

不確定沒有比較視圖/源輸出和瀏覽器devtools檢查器中的實時html。這可能是因爲他們沒有正確地整合原始html輸出(這對於搜索引擎來說應該是這樣)。您可能不得不求助於在您的服務器上使用無頭瀏覽器 – charlietfl 2014-12-06 21:32:44

+0

URL示例錯誤。良好的URL是http://www.pluralsight.com/courses/using-stackoverflow-stackexchange-sites?_escaped_fragment_=。 – 2014-12-08 10:32:34

0

您可以使用:

require 'phantomjs' 
require 'watir' 

b = Watir::Browser.new(:phantomjs) 
b.goto URL 

doc = Nokogiri::HTML(b.html) 

@title = doc.css('h1').first.text 
在個

下載phantomjs和移動的二進制文件在/ usr/bin中