2012-09-07 94 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