【发布时间】:2014-11-18 08:01:30
【问题描述】:
我正在尝试使用 Ruby 学习脚本,这是我的第一个问题。
我有一个包含州及其城市的 HTML 文件。我需要能够访问这些城市并在我的 Ruby 代码中知道它们属于哪个州,所以我计划解析 HTML 并为每个城市创建一个哈希,如下所示:{New York => New York City }.
我正在尝试使用 Nokogiri,我现在正在学习。
<h4>State</h4>
<ul>
<li>city</li>
<li>city</li>
<li>city</li>
</ul>
<h4>State</h4>
<ul>
<li>city</li>
<li>city</li>
<li>city</li>
</ul>
<h4>State</h4>
<ul>
<li>city</li>
<li>city</li>
<li>city</li>
</ul>
我正在使用它来将状态放入一个数组中:
require 'rubygems'
require 'nokogiri'
page = Nokogiri::HTML(open("to_parse.html"))
states = Array.new(100), index = 0
page.css('h4').each do |s|
states[index] = s.text
puts states[index]
index += 1
end
这实际上并没有帮助;我需要弄清楚如何让Nokogiri 将每个列表的元素解析为包含城市及其州的hashes。我不确定当它完成一个州的城市列表时如何进行循环中断,并为下一个州的城市列表创建一组新的hashes。
我想我必须为每个列表元素创建一个hash,并将该列表的h4 标记的文本存储在每个hash 中,这样我就知道该城市属于哪个州。我不知道该怎么做。
请随意提供一些关于重构我所拥有的东西的建议,因为我知道它可以做得更好。
【问题讨论】:
标签: ruby hash html-parsing nokogiri