article is a stream and you try to read it twice, this doesn't work like you think. I guess the 2nd article.read just returns "", so "".scan(...) returns nothing. Try the following: > articles.read.scan(article_page).each do |url| > article_url = "#{base_url}#{url}" > open(article_url) do |article| articletxt=article.read > # screen-scrap for article author and title title = articletxt.scan(title_match) > # for whatever reason, author never returns anything author = articletxt.scan(author_match) > # create new article object > list.append(Article.new(title, author, article_url)) > end > end Dominik