やっつけです。タブ区切りで標準出力に吐きます。
ソースとして
政治家WEBリンク集
http://db.kosonippon.org/link/link.php
を使いました。
ちなみに
です。食い違いの理由については「ウェブサイトを持っていない議員もいる」などが考えられますが、実際のところは分かりません。
# -*- coding: utf-8 -*- # author: sonota # license: MIT require "rubygems" require "open-uri" require "nokogiri" require "pp" Giin = Struct.new "Giin", :name, :url, :party class Giin def to_tsv_row [self.name, self.party, self.url].join("\t") end end def tds_to_giins(tds) list = [] while tds.size > 0 td1 = tds.shift td2 = tds.shift g = Giin.new g.url = td1.css("a")[0].attr(:href) />(.+?)<br/ =~ td2.to_s g.name = $1 />\s*(.+?)\s*<\/font/ =~ td2.to_s g.party = $1 list << g end list end base_url = "http://db.kosonippon.org/link/link.php?sort=name&tab=" giins = [] # あ行からわ行まで (1..10).each{|tab| url = "#{base_url}#{tab}" doc = Nokogiri::HTML( open(url) ) tds = doc.css("table.table3 td") temp_giins = tds_to_giins(tds) STDERR.puts url, temp_giins.size giins += temp_giins sleep 2 } puts giins.map{|giin| giin.to_tsv_row }.join("\n")