From: Dan Diebolt Date: 2008-07-02T06:03:37+09:00 Subject: Re: Using hpricot to get tables --0-1468761159-1214946392=:39272 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit >I would like to access each table individually doc.search returns an array even if there is only one match. The consturct you are using iterates through this array: doc.search(strPath) do |div| end if you capture the search results into a variable named "divs" you can index it like and array (because it is one) divs=doc.search(strPath) If you want to immediately start iterating you can do this: doc.search(strPath).each_with_index do |div,idiv| puts idiv if idiv==2 end I work with hpricot a lot and I find it is more productive to not use all the fancy ruby idioms to shorten your code as you are dealing with pages that are very fragile to parse when someone changes the page content. See code below ============== require 'hpricot' require 'open-uri' strLink ="http://www.sportsline.com/mlb/gamecenter/boxscore/MLB_20080331_ARI@CIN" strPath ="//div[@class='SLTables1']/div" doc = Hpricot(open(strLink)) divs=doc.search(strPath) puts "#{divs[0].inner_text.slice(0..70)}\n\n" puts "#{divs[1].inner_text.slice(0..70)}\n\n" puts "#{divs[2].inner_text.slice(0..70)}\n\n" puts "#{divs[3].inner_text.slice(0..70)}\n\n" --0-1468761159-1214946392=:39272--