2014-01-07 116 views
0

我已經得到了DOM刮跑引入nokogiri寶石Ruby腳本如下:DOM刮使用引入nokogiri

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

names = Array.new 
contact = Array.new 
address = Array.new 
final = Array.new 
doc = Nokogiri::HTML(open('INSERTURLHERE')) 

names = doc.xpath("//span[contains(@class,'jcn')]/a/text()").collect {|node| node.strip.text} 
contact = doc.xpath("//p[contains(@class,'jrcw')]/a/b/text()").collect {|node| node.text.strip} 
address = doc.xpath("//p[contains(@class,'jaid')]/text()").collect {|node| node.text.strip} 


final.zip(names, contact, address).each do |names, contact, address| 
    puts names + " " + contact + " " + address 
end 

我使用的命令行作爲

ruby filename.rb > output.txt

運行然而, output.txt是空的。腳本有什麼問題導致腳本無法運行?

+0

,如果你上傳的內容打印'把names','提出contact' ,'放置地址'? – falsetru

+0

@falsetru它打印名稱,聯繫人和地址。 – Newtt

+0

就像你通常不需要使用collect方法初始化數組一樣,註釋會返回一個Array,所以'Array.new'方法可能是不必要的。我只會初始化一個空數組,如果我需要將它追加到一個塊中。 – engineersmnky

回答

1

final是一個空數組。與其他陣列荏苒它產生空數組:

final = Array.new 
final.zip([1], [2]) # <--- 
# => [] 

[1].zip([2]) 
# => [[1, 2]] 

替換:

final.zip(names, contact, address) 

names.zip(contact, address)