有没有办法保存抓取的信息?

时间:2013-12-29 16:35:35

标签: ruby-on-rails ruby web-crawler average

我的应用程序的用户通过表单提交请求并接收一组数字。这些数字在一天中不断更新,我需要一种方法来跟踪最后两个数字的平均值。

它的工作原理如下:

  • 你现在有多少经验?:13000000
  • 你现在有多少经验?:13200000(一小时后)
  • 然后,应将用户重定向到显示“每小时体验”的页面:200000

我的申请目前只能提出号码请求。现在我需要一种方法来保存该数字及其创建时间,允许搜索第二个数字,然后对它们执行计算。

以下是我的文件内容。

home.html.erb,格式为:

<h1>Welcome to xpTrack</h1>

<%= form_tag("/search", method: "get") do %>
  <%= label_tag(:username, "Search for:") %>
  <%= text_field_tag(:username) %>
  <%= submit_tag("Search") %>
<% end %>

此表单将用户输入的用户名传递给控制器​​中的params[:username]

SearchController

class SearchController < ApplicationController
  def home
    require 'open-uri'

    @username = params[:username]
    @url = "http://hiscore.runescape.com/index_lite.ws?player=#{@username}"
    @doc = Nokogiri::HTML(open(@url))

    @stats = @doc.text.split(' ').map{|a| a.split(",") }

    @skills = %w(overall, attack, defence, strength, constitution, ranged, prayer, magic, cooking, woodcutting, fletching, fishing, firemaking, crafting, smithing, mining, herblore, agility, thieving, slayer, farming, runecrafting, hunter, construction, summoning, dungeoneering, divination)

    @max = 13034431
  end
end

此视图在搜索后呈现:

<h1>
  <%= @username.capitalize %>
</h1>

<table>
  <tr>
    <th>Skill</th>
    <th>Rank</th>
    <th>Level</th>
    <th>Experience</th>
    <th>Experience to 99</th>
  </tr>
  <% @skills.each_with_index do |skill, i| %>
    <tr>
      <td><%= skill.chomp(',').capitalize %></td>
      <td><%= @stats[i][0] %></td>
      <td><%= @stats[i][1] %></td>
      <td><%= @stats[i][2] %></td>

      <% if @stats[i][2].to_i < @max %>
      <td><%= @max - (@stats[i][2]).to_i %></td>
      <% end %>
    </tr>
  <% end %>
</table>

链接到Heroku的应用程序:http://runescapecalc.herokuapp.com/

搜索时,请使用用户名“Brink”。

0 个答案:

没有答案