将wikipedia上面表格中的信息的一个整合, 重点:掌握关于筛选和array manipulation的技巧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| require 'nokogiri' require 'open-uri'
BASE_WIKIPEDIA_URL = "http://en.wikipedia.org" LIST_URL = "#{BASE_WIKIPEDIA_URL}/wiki/List_of_Nobel_laureates" page = Nokogiri::HTML(open(LIST_URL)) rows = page.css('div.mw-content-ltr table.wikitable tr')
rows[1..-2].each do |row| hrefs = row.css("td a").map{ |a| a['href'] if a['href'].match("/wiki/") }.compact.uniq # 对每一个row里面将不同的cell里面的link收集起来,然后filter # 同样长度的array在filter之后不符合要求的得到nil然后在compact方法的时候被删掉 # 然后uniq是删去那些相同的link url
hrefs.each do |href| puts href end end
|