在学习如何在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
如何从网络应用程序运行相同的操作。
如果有人可以帮助解决这个问题,那就太棒了。
答案 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