为什么只提取第一个链接?

时间:2012-04-20 22:26:19

标签: ruby httparty

我正在尝试从黑客新闻中获取新闻,并将链接的标题和URL写入HTML文件。但是,只有第一个链接正在写入,而其他链接则没有。我做错了什么?

require 'httparty'

def fetch(source)
  response = HTTParty.get(source)
  response["items"].each do |item|
    return '<a href="' + item["url"] + '">' + item["title"] + '</a>'
  end
end

links = fetch('http://api.ihackernews.com/page')

File.open("/tmp/news.html", "w") do |f|
  f.puts links
end

1 个答案:

答案 0 :(得分:4)

在这种情况下,您不应使用return关键字。它过早地结束方法并仅返回第一个链接。请改用:

require 'httparty'

def fetch(source)
  response = HTTParty.get(source)

  # convert response['items'] array to array of strings
  response["items"].map do |item| 
    '<a href="' + item["url"] + '">' + item["title"] + '</a>'
  end
end

links = fetch('http://api.ihackernews.com/page')

links.length # => 30