2014-01-07 69 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)