0

是否可以使用控制器的渲染方法来渲染 Mechanize 对象的内容?我试过:

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

  render :html => a.current_page
end

这会引发错误,以及render :text => a,a.pagea.current_page.

我知道该render函数不希望有一个 Mechanize 对象,我只是不知道它想要什么以及如何到达那里。

我正处于开发和研究所有 Ruby 网络抓取框架的开始阶段,如果有任何帮助,我将不胜感激。

4

1 回答 1

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。有关信息,请参阅“使用 ruby​​/mechanize(和 nokogiri)从 html 中提取单个字符串”。

现在,虽然这可行,但您可能需要考虑直接在页面上重复使用内容是否违反了服务条款或版权。

于 2012-09-07T19:49:49.357 回答