我如何自动化Nokogiri?

时间:2014-01-02 13:23:17

标签: ruby nokogiri open-uri

在学习如何在Ruby中使用Nokogiri时,我得到了这个想法,如果我可以自动执行这些命令,我​​会用bash为Nokogiri编写这些命令? 有什么方法或方法可以用来自动化呼叫吗?

例如:当我试图从我写的一个网站上获取一些数据时:

require 'rubygems'
require 'nokogiri'   
require 'open-uri'
PAGE_URL = "http://hackerstreet.in"
page = Nokogiri::HTML(open(PAGE_URL))

links = page.css("a")
puts links.length   
puts links[0].text   
puts links[0]["href"] 

并且,要执行它,我必须在命令行输入此命令:

$ ruby any.rb > any.html

如何从网络应用程序运行相同的操作。

如果有人可以帮助解决这个问题,那就太棒了。

1 个答案:

答案 0 :(得分:1)

将代码作为方法插入rails app的库中。通常,库位于 Rails 应用程序根目录下的 lib / 文件夹中。然后直接从控制器调用定义的方法,调用:respond方法来处理来自浏览器的请求,并在视图中输出方法的结果。如果抓取过程需要大量的tike使用异步操作,例如使用event-machine gem

最简单的应用程序如下:

应用/控制器/ your_controller.rb

def index
   result = WebGrab.grab "http://hackerstreet.in"
   render text: result.inspect # just renders text, replace it as a call to render a view
end

<强> LIB / webgrab.rb

require 'nokogiri'   
require 'open-uri'

module WebGrab
   def self.grab uri
      page = Nokogiri::HTML( open uri )

      links = page.css("a")
      [ links.length, puts links[0].text, links[0]["href"] ]
   end
end