2012-09-07 96 views
0

是否可以使用控制器的渲染方法渲染Mechanize對象的內容?我想:紅寶石機械化

def new 
    a = Mechanize.new 
    a.get('http://flickr.com/') 

    render :html => a.current_page 
end 

它拋出一個錯誤,以及render :text => aa.pagea.current_page

據我所知,render函數並不期望一個Mechanize對象,我只是不知道它想要什麼以及如何獲得它。

我在開發和研究Ruby的所有網頁抓取框架和任何幫助的開始階段將不勝感激。

回答

1

嘗試body方法:

page = agent.get('http://www.example.net') 
puts page.body[0..100] 
=> "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml" 

還可以使用引入nokogiri的能力,更深入到文檔中。 Mechanize圍繞Nokogiri構建,因此您可以訪問Nokogiri創建的解析文檔,然後使用CSS或XPath訪問器找到文檔的子部分。一旦你找到你想要的東西,你可以使用to_html方法讓Nokogiri發佈節點或節點集的HTML。有關信息,請參閱「extract single string from html using ruby/mechanize (and nokogiri)」。

現在,雖然可行,但您可能需要考慮是否通過在您的網頁上直接重複使用內容來違反服務條款或版權。

+0

謝謝你的幫助,雖然這不適合我。 – xMythicx