2012-12-25 40 views
0

我写了一些代码来返回并显示this website上的五个最近的帖子。然而,当我使用for循环运行代码时,会返回一个空字符串。代码如下:Web Scraping返回空字符串

require 'rubygems' 
require 'mechanize' 

agent = Mechanize.new 
site = "http://metarand.com" 
page = agent.get(site) 

for i in 1..5 
    puts "#{i}) - #{page.search("#boxes :nth-child(i) .clearfix .blog-title")}" 
end 

代码有什么问题,以及如何修复它?

+1

我只想说,你应该使用'.each'而不是'for'和'in'。 – weddingcakes

+0

我同意@weddingcakes。使用'for'不是惯用的Ruby。改为使用'each'。 “for”会导致你看到的结果。 –

回答

1

我相信,你需要像:

(1..5).each {|i| puts %Q~#{i} - #{page.at("#boxes :nth-child(#{i}) .clearfix .blog-title").text}~ } 
0
agent = Mechanize.new 
site = "http://metarand.com" 
agent.get(site) do |page| 
    for i in 1..5 
    puts %Q~#{i} - #{page.search("#boxes :nth-child(#{i}) .clearfix .blog-title")}~ 
    end 
end 
0

简单的错误:

puts "#{i}) - #{page.search("#boxes :nth-child(i) .clearfix .blog-title")}" 
               ^^^ 

应该是:#{i}