Ruby读取文件内容并将选定的条件推送到数组中的数组中

时间:2014-07-26 21:46:02

标签: ruby arrays file-io

我想创建一个简单的Ruby程序,它可以读取单个html页面的内容并将两个信息输出到数组中。

例如,这是网页:http://www.trulia.com/real_estate/Cambridge-Massachusetts/

我希望我的输出为:

output = [ [Mid-Cambridge, $642,126],
[North Cambridge, $602,100,]
[East Cambridge, $611,436]
[Neighborhood Nine, $1,068,284]
[West Cambridge, $1,577,444] ]

我在想做类似的事情:

File.read(文件名).INCLUDE?(each_neighborhood)

从那里,将每个邻居和html文件中离它最近的价格一起推入一个阵列,冲洗并重复。但我觉得这可能不是最有效的方法,我也不确定如何实现它。

我也听说过'search_in_file'可能很有用。但它可能没有必要。

2 个答案:

答案 0 :(得分:0)

您可能需要查看Nokogiri,当您需要使用网页并希望从中提取信息时,这是一个很棒的宝石。

答案 1 :(得分:0)

这是一个小脚本:

#!/usr/bin/env ruby         
require 'nokogiri'
require 'open-uri'
url = "http://www.trulia.com/real_estate/Cambridge-Massachusetts/"

web_page = open(url).read
doc = Nokogiri::HTML.parse( web_page )

neighborhoods = doc.css('#most_popular td.txtL').map(&:text)
listing_prices = doc.css('#most_popular td.txtC').map(&:text)

output = neighborhoods.zip(listing_prices)
puts output.inspect

输出看起来像这样

[["Mid-Cambridge", "$642,126"],
 ["North Cambridge", "$602,100"],
 ["East Cambridge", "$611,436"],
 ["Neighborhood Nine", "$1,068,284"],
 ["West Cambridge", "$1,577,444"]]

你正在寻找什么,对吧?