对抓取的信息进行排序?

时间:2013-12-22 14:46:05

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

以下是我成功抓取的网页的结果:

result 问题是我只获得了数字!没有分离。我的目标是分离和排序它们。

这些数字中的每一个都意味着什么。但是我们先拿三个。 5553是玩家的等级,2591是玩家的等级,1287238956是玩家的经验值。

如何以这样的格式(如表格)显示此信息?

Skill    Rank    Level    Experience

Overall  5553    2591     1287238956

这是我的PagesController:

class PagesController < ApplicationController
  def home
    require 'open-uri'
    @username = "brink"
    @url = "http://hiscore.runescape.com/index_lite.ws?player=#{@username}"
    @doc = Nokogiri::HTML(open(@url))
  end

  def help
  end
end

这是我的家庭观点:

<h1>Welcome to xpTrack</h1>

<%= @doc.text %>

我有什么选择?

我尝试过的以及我在做什么

  1. 我调查了split方法,但显然只是这样 适用于数组吗?
  2. 我也注意到每次分离之间都有一个空格 我需要指出的一点。现在猜猜这只是能够做到的事情 拜访其中一个单位。
  3. 目前正在尝试将@doc转换为字符串,并以某种方式将其分隔为空格。
  4. ^^^那肯定没用。

2 个答案:

答案 0 :(得分:2)

如果您有大量数据,请不要上传截图...

给出一些示例数据:

data = "5553,2591,1287238956 5553,2591,1287238956 5553,2591,1287238956 5553,2591,1287238956"

您可以为数据创建一个interims类,例如

Player = Struct.new(:rank, :level, :experience)

并在视图中创建可供访问的玩家列表

@players = data.split(' ').map { |data| Player.new(*data.split(',')) }

答案 1 :(得分:1)

Enumerable#each_slice 这有助于您构建表。在你的情况下
来自另一个答案的数据

=> data = "5553,2591,1287238956 5553,2591,1287238956 5553,2591,1287238956 5553,2591,1287238956"

=> data.split(' ').each_slice(3) { |a| puts a }
=> 5553,2591,1287238956
   5553,2591,1287238956
   5553,2591,1287238956
   5553,2591,1287238956