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