我想湊有關網站的新專輯發佈的信息,而且我通過引入nokogiri處理這個。這個想法是創建一個不錯的數組將包含像這樣紅寶石 - 寫入嵌套陣列
[
0 => ['The Wall', 'Pink Floyd', '1979'],
1 => ['Led Zeppelin I', 'Led Zeppelin', '1969']
]
這是我當前的代碼項目。我是一個總的紅寶石新手,所以任何建議將不勝感激。
@events = Array.new()
# for every date we encounter
doc.css("#main .head_type_1").each do |item|
date = item.text
# get every albumtitle
doc.css(".albumTitle").each_with_index do |album, index|
album = album.text
@events[index]['album'] = album
@events[index]['release_date'] = date
end
#get every artistname
doc.css(".artistName").each do |artist|
artist = artist.text
@events[index]['artist'] = artist
end
end
puts @events
P.S.我想刮頁面的格式有點怪:
<tr><th class="head_type_1">20 October 1989</th></tr>
<tr><td class="artistName">Jean Luc-Ponty</td><td class="albumTitle">Some example album</td></tr>
<tr><td class="artistName">Some Other Artist</td><td class="albumTitle">Some example album</td></tr>
<tr><td class="artistName">Some Other Artist</td><td class="albumTitle">Some example album</td></tr>
<tr><th class="head_type_1">29 October 1989</th></tr>
<tr><td class="artistName">Some Other Artist</td><td class="albumTitle">Some example album</td></tr>
當我嘗試Ruby解釋我遇到下面的錯誤中運行此:
get_events.rb:25:in `block (2 levels) in <main>': undefined method `[]=' for nil:NilClass (NoMethodError)
from /Users/adrian/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.5/lib/nokogiri/xml/node_set.rb:239:in `block in each'
from /Users/adrian/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.5/lib/nokogiri/xml/node_set.rb:238:in `upto'
from /Users/adrian/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.5/lib/nokogiri/xml/node_set.rb:238:in `each'
from get_events.rb:23:in `each_with_index'
from get_events.rb:23:in `block in <main>'
from /Users/adrian/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.5/lib/nokogiri/xml/node_set.rb:239:in `block in each'
from /Users/adrian/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.5/lib/nokogiri/xml/node_set.rb:238:in `upto'
from /Users/adrian/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.5/lib/nokogiri/xml/node_set.rb:238:in `each'
from get_events.rb:18:in `<main>'
如何解決這個?
什麼是你的問題? – waldrumpus
添加了錯誤輸出和問題:) – Carvefx
當您爲該複雜性的代碼添加錯誤消息時,應該將行號添加到代碼中。你認爲有人會通過代碼爲你做所有的工作嗎? – sawa