日本の全上場企業名一覧?をcsvで取得(重複あり)。
http://www.jpubb.com/様を利用させていただいています。
- get.rb
require 'rubygems' require 'hpricot' require 'mechanize' require 'kconv' require 'uri' $KCODE="u" #exit(); str3="http://www.jpubb.com/list/list.php?se=dai2&pageID=" agent = Mechanize.new agent.user_agent_alias="Windows IE 7" tmp=agent.get("http://www.jpubb.com/list/") doc=Hpricot( tmp.body); j=(doc/"select.prs_src_sel") #j2=(j/"option") #puts j2[1] #puts j[2] jj=(j[2]/"optgroup") #puts jj f123=[]; l=0; jj.each{|i| l=0; #puts i j2= (i/"option") j2.each{|kk| #puts j2 if l>=1 then # puts kk[:value] # puts (kk/"*")[:value]; f123.push(kk[:value]) end l=l+1; }; } #puts f123; #exit(); market_no=1; f123.each{|market| #market=f123[7]; #puts market strk="http://www.jpubb.com/list/list.php?se="+market+"&pageID=" str4=strk+"1" tmp=agent.get(str4).body doc=Hpricot(tmp); #puts doc #j=((doc/"a[@title$=Last Page]")); #puts j[0]; #puts j[0][:title] j=(doc/"a[@title^=Go to]"); #puts j[1] j2= (j.search("*:not(.nextprev)")); j3= j2.map{|i| i.inner_text.to_i;} no123= j3.max if no123 == nil then no123=1; end #puts market+" "+no123.to_s; #puts j; #puts j2; #puts j #no123= j[0].inner_text.to_i; #exit(); k=1; no123.times(){|i| #1.times(){|i| # puts i+1; #puts k; str3=strk+k.to_s response=agent.get(str3); doc=Hpricot(response.body); j=(doc/"table.corpTable") #puts j; link123=""; (j/"tr").each{|f| # puts k; name=(f/"td.name").inner_text; code=(f/"td.code").inner_text; other=(f/"td.other").inner_text; #other2=(((f/"td.other")/"a")[3]); other2=(((f/"td.other")/"a")); other2.each(){|link| link123=link[:href] } other=other.split("|")[0,3].join("\t") #puts other2; #link1=((f/"td.other")/"a")[3]; if name.length !=0 then puts market+"\t"+market_no.to_s+"\t"+name+"\t"+code+"\t"+other+"\t"+link123.to_s; end } k=k+1; sleep(0.3) } market_no=market_no+1; }
ruby get.rb
出力例:タブ区切り(ダウンロード市場コード、ダウンロード市場番号、企業名、証券コード、産業、市場、都道府県、企業ホームページURL)
tou1 1 極洋 1301 水産・農林 東証一部 東京都 http://www.kyokuyo.co.jp/
tou1 1 日本水産 1332 水産・農林 東証一部,大証一部 東京都 http://www.nissui.co.jp
…
重複をとりたければ
もしくは、
tac all_market_list.csv | awk '{a[$4]=$0}END{for(i in a){print a[i]}}' | sort -k2,2g -k4,4g > all_market_list_uniq.csv
ちなみに全ての企業数は, 3548社。
のべ企業数(重複上場もふくめて数えるは)4396社
- 重複上場
awk -F"\t" '{print $5}' all_market_list.csv | sort | uniq -c
1048 東証一部
869 JASDAQスタンダード
750 東証一部,大証一部
348 東証二部
206 東証一部,名証一部
175 東証マザーズ
158 大証二部
153 東証一部,大証一部,名証一部
136 名証二部
66 東証一部,大証一部,名証一部,札証,福証
56 東証二部,名証二部
56 東証二部,大証二部
50 JASDAQグロース
40 セントレックス
30 大証一部
27 東証一部,福証
26 福証
26 東証一部,大証一部,福証
24 東証一部,大証一部,名証一部,福証
18 東証一部,札証
18 Q-Board
16 アンビシャス
14 名証一部
10 東証二部,JASDAQスタンダード
10 大証二部,名証二部
9 札証
8 東証二部,福証
8 東証一部,大証一部,札証
6 東証一部,名証一部,福証
6 大証二部,福証
6 JASDAQスタンダード,名証二部
4 東証一部,JASDAQスタンダード
3 東証二部,札証
3 東証一部,大証一部,名証一部,札証
3 JASDAQスタンダード,福証
3 JASDAQスタンダード,札証
2 東証一部,名証一部,札証
2 東証一部,大証二部
2 東証一部,大証一部,札証,福証
1 東証マザーズ,札証