前回の記事では日経255の企業のうち取り出していたのは半分のみだった。原因は企業名を含むコンポーネントのクラス名に"commponent-list"
, commponent-list list-even
の2種類のうち前者のみを取り出していたためだった。
実現したいこと
nikkei255のサイトにアクセスし、CSV(No., コード, 会社名)を出力する。
#htmlを解析し、オブジェクト化 page = Nokogiri::HTML.parse(html, nil, charset) nodes = page.css("div.component-list") #これでlist-evenも取り出すことができる puts nodes #nodesはNokogiri::XML::NodeSetクラス
上を実行すると、下が出力される。
<div class="row component-list list-even"> <div class="col-xs-3 col-sm-1_5">6361</div> <div class="col-xs-9 col-sm-2_5"><a href="http://www.nikkei.com/markets/company/index.aspx?scode=6361">荏原</a></div> <div class="hidden-xs col-sm-8">(株)荏原製作所</div> </div>
ここからNodeSet1つごとに, インデックス、コード、会社名を取り出し、配列にして出力したい。
作成したコード
require 'open-uri' #URLにアクセスする為のライブラリを読み込みます。 require 'nokogiri' #Nokogiriライブラリを読み込みます。 require 'csv' #切り出すURLを指定します。 url = 'https://indexes.nikkei.co.jp/nkave/index/component?idx=nk225' charset = nil html = open(url) do |f| charset = f.charset #文字種別を取得します。 f.read end #htmlを解析し、オブジェクト化 page = Nokogiri::HTML.parse(html, nil, charset) nodes = page.css("div.component-list") # 配列を初期化, 列名を入力 rows = [] rows << ['No.', 'コード', '企業名'] # 1行ごとに行番号、企業コード、企業名を追加 nodes.each_with_index do |node, index| row = Array.new row << index + 1 row << node.search('div.col-xs-3').text row << node.search('div.hidden-xs').text rows << row end # CSVファイルに保存 File.open("/Users/bupolang/projects/webscrape/nikkei255.csv", "w") do |f| #データをループ rows.each { |line_array| p line_array #1行ごとに実行 line_array.each {|i| f.print(i) f.print(",") } #行末に改行コードを入力 f.print "\n" } end
結果
以下のようにCSV形式でデータを抽出することができた。
No. | コード | 企業名 |
---|---|---|
1 | 4151 | 協和キリン(株) |
2 | 4502 | 武田薬品工業(株) |
3 | 4503 | アステラス製薬(株) |
4 | 4506 | 大日本住友製薬(株) |
5 | 4507 | 塩野義製薬(株) |
6 | 4519 | 中外製薬(株) |
7 | 4523 | エーザイ(株) |
8 | 4568 | 第一三共(株) |
9 | 4578 | 大塚ホールディングス(株) |
10 | 3105 | 日清紡ホールディングス(株) |
11 | 6479 | ミネベアミツミ(株) |
12 | 6501 | (株)日立製作所 |
13 | 6503 | 三菱電機(株) |
14 | 6504 | 富士電機(株) |
15 | 6506 | (株)安川電機 |
16 | 6645 | オムロン(株) |
17 | 6674 | (株)ジーエス・ユアサ コーポレーション |
18 | 6701 | 日本電気(株) |
19 | 6702 | 富士通(株) |
20 | 6703 | 沖電気工業(株) |
21 | 6724 | セイコーエプソン(株) |
22 | 6752 | パナソニック(株) |
23 | 6758 | ソニー(株) |
24 | 6762 | TDK(株) |
25 | 6770 | アルプスアルパイン(株) |
26 | 6841 | 横河電機(株) |
27 | 6857 | (株)アドバンテスト |
28 | 6902 | (株)デンソー |
29 | 6952 | カシオ計算機(株) |
30 | 6954 | ファナック(株) |
31 | 6971 | 京セラ(株) |
32 | 6976 | 太陽誘電(株) |
33 | 7735 | (株)SCREENホールディングス |
34 | 7751 | キヤノン(株) |
35 | 7752 | (株)リコー |
36 | 8035 | 東京エレクトロン(株) |
37 | 7201 | 日産自動車(株) |
38 | 7202 | いすゞ自動車(株) |
39 | 7203 | トヨタ自動車(株) |
40 | 7205 | 日野自動車(株) |
41 | 7211 | 三菱自動車工業(株) |
42 | 7261 | マツダ(株) |
43 | 7267 | 本田技研工業(株) |
44 | 7269 | スズキ(株) |
45 | 7270 | (株)SUBARU |
46 | 7272 | ヤマハ発動機(株) |
47 | 4543 | テルモ(株) |
48 | 4902 | コニカミノルタ(株) |
49 | 7731 | (株)ニコン |
50 | 7733 | オリンパス(株) |
51 | 7762 | シチズン時計(株) |
52 | 9412 | (株)スカパーJSATホールディングス |
53 | 9432 | 日本電信電話(株) |
54 | 9433 | KDDI(株) |
55 | 9437 | (株)NTTドコモ |
56 | 9613 | (株)エヌ・ティ・ティ・データ |
57 | 9984 | ソフトバンクグループ(株) |
58 | 7186 | (株)コンコルディア・フィナンシャルグループ |
59 | 8303 | (株)新生銀行 |
60 | 8304 | (株)あおぞら銀行 |
61 | 8306 | (株)三菱UFJフィナンシャル・グループ |
62 | 8308 | (株)りそなホールディングス |
63 | 8309 | 三井住友トラスト・ホールディングス(株) |
64 | 8316 | (株)三井住友フィナンシャルグループ |
65 | 8331 | (株)千葉銀行 |
66 | 8354 | (株)ふくおかフィナンシャルグループ |
67 | 8355 | (株)静岡銀行 |
68 | 8411 | (株)みずほフィナンシャルグループ |
69 | 8253 | (株)クレディセゾン |
70 | 8601 | (株)大和証券グループ本社 |
71 | 8604 | 野村ホールディングス(株) |
72 | 8628 | 松井証券(株) |
73 | 8630 | SOMPOホールディングス(株) |
74 | 8725 | MS&ADインシュアランスグループホールディングス(株) |
75 | 8729 | ソニーフィナンシャルホールディングス(株) |
76 | 8750 | 第一生命ホールディングス(株) |
77 | 8766 | 東京海上ホールディングス(株) |
78 | 8795 | (株)T&Dホールディングス |
79 | 1332 | 日本水産(株) |
80 | 1333 | マルハニチロ(株) |
81 | 2002 | (株)日清製粉グループ本社 |
82 | 2269 | 明治ホールディングス(株) |
83 | 2282 | 日本ハム(株) |
84 | 2501 | サッポロホールディングス(株) |
85 | 2502 | アサヒグループホールディングス(株) |
86 | 2503 | キリンホールディングス(株) |
87 | 2531 | 宝ホールディングス(株) |
88 | 2801 | キッコーマン(株) |
89 | 2802 | 味の素(株) |
90 | 2871 | (株)ニチレイ |
91 | 2914 | 日本たばこ産業(株) |
92 | 3086 | J.フロント リテイリング(株) |
93 | 3099 | (株)三越伊勢丹ホールディングス |
94 | 3382 | (株)セブン&アイ・ホールディングス |
95 | 8028 | (株)ファミリーマート |
96 | 8233 | (株)高島屋 |
97 | 8252 | (株)丸井グループ |
98 | 8267 | イオン(株) |
99 | 9983 | (株)ファーストリテイリング |
100 | 2413 | エムスリー(株) |
101 | 2432 | (株)ディー・エヌ・エー |
102 | 4324 | (株)電通グループ |
103 | 4689 | Zホールディングス(株) |
104 | 4704 | トレンドマイクロ(株) |
105 | 4751 | (株)サイバーエージェント |
106 | 4755 | 楽天(株) |
107 | 6098 | (株)リクルートホールディングス |
108 | 6178 | 日本郵政(株) |
109 | 9602 | 東宝(株) |
110 | 9735 | セコム(株) |
111 | 9766 | コナミホールディングス(株) |
112 | 1605 | 国際石油開発帝石(株) |
113 | 3101 | 東洋紡(株) |
114 | 3103 | ユニチカ(株) |
115 | 3401 | 帝人(株) |
116 | 3402 | 東レ(株) |
117 | 3861 | 王子ホールディングス(株) |
118 | 3863 | 日本製紙(株) |
119 | 3405 | (株)クラレ |
120 | 3407 | 旭化成(株) |
121 | 4004 | 昭和電工(株) |
122 | 4005 | 住友化学(株) |
123 | 4021 | 日産化学(株) |
124 | 4042 | 東ソー(株) |
125 | 4043 | (株)トクヤマ |
126 | 4061 | デンカ(株) |
127 | 4063 | 信越化学工業(株) |
128 | 4183 | 三井化学(株) |
129 | 4188 | (株)三菱ケミカルホールディングス |
130 | 4208 | 宇部興産(株) |
131 | 4272 | 日本化薬(株) |
132 | 4452 | 花王(株) |
133 | 4631 | DIC(株) |
134 | 4901 | 富士フイルムホールディングス(株) |
135 | 4911 | (株)資生堂 |
136 | 6988 | 日東電工(株) |
137 | 5019 | 出光興産(株) |
138 | 5020 | JXTGホールディングス(株) |
139 | 5101 | 横浜ゴム(株) |
140 | 5108 | (株)ブリヂストン |
141 | 5201 | AGC(株) |
142 | 5202 | 日本板硝子(株) |
143 | 5214 | 日本電気硝子(株) |
144 | 5232 | 住友大阪セメント(株) |
145 | 5233 | 太平洋セメント(株) |
146 | 5301 | 東海カーボン(株) |
147 | 5332 | TOTO(株) |
148 | 5333 | 日本碍子(株) |
149 | 5401 | 日本製鉄(株) |
150 | 5406 | (株)神戸製鋼所 |
151 | 5411 | ジェイ エフ イー ホールディングス(株) |
152 | 5541 | 大平洋金属(株) |
153 | 3436 | (株)SUMCO |
154 | 5703 | 日本軽金属ホールディングス(株) |
155 | 5706 | 三井金属鉱業(株) |
156 | 5707 | 東邦亜鉛(株) |
157 | 5711 | 三菱マテリアル(株) |
158 | 5713 | 住友金属鉱山(株) |
159 | 5714 | DOWAホールディングス(株) |
160 | 5801 | 古河電気工業(株) |
161 | 5802 | 住友電気工業(株) |
162 | 5803 | (株)フジクラ |
163 | 5901 | 東洋製罐グループホールディングス(株) |
164 | 2768 | 双日(株) |
165 | 8001 | 伊藤忠商事(株) |
166 | 8002 | 丸紅(株) |
167 | 8015 | 豊田通商(株) |
168 | 8031 | 三井物産(株) |
169 | 8053 | 住友商事(株) |
170 | 8058 | 三菱商事(株) |
171 | 1721 | コムシスホールディングス(株) |
172 | 1801 | 大成建設(株) |
173 | 1802 | (株)大林組 |
174 | 1803 | 清水建設(株) |
175 | 1808 | (株)長谷工コーポレーション |
176 | 1812 | 鹿島建設(株) |
177 | 1925 | 大和ハウス工業(株) |
178 | 1928 | 積水ハウス(株) |
179 | 1963 | 日揮ホールディングス(株) |
180 | 5631 | (株)日本製鋼所 |
181 | 6103 | オークマ(株) |
182 | 6113 | (株)アマダホールディングス |
183 | 6301 | (株)小松製作所 |
184 | 6302 | 住友重機械工業(株) |
185 | 6305 | 日立建機(株) |
186 | 6326 | (株)クボタ |
187 | 6361 | (株)荏原製作所 |
188 | 6367 | ダイキン工業(株) |
189 | 6471 | 日本精工(株) |
190 | 6472 | NTN(株) |
191 | 6473 | (株)ジェイテクト |
192 | 7004 | 日立造船(株) |
193 | 7011 | 三菱重工業(株) |
194 | 7013 | (株)IHI |
195 | 7003 | (株)三井E&Sホールディングス |
196 | 7012 | 川崎重工業(株) |
197 | 7832 | (株)バンダイナムコホールディングス |
198 | 7911 | 凸版印刷(株) |
199 | 7912 | 大日本印刷(株) |
200 | 7951 | ヤマハ(株) |
201 | 3289 | 東急不動産ホールディングス(株) |
202 | 8801 | 三井不動産(株) |
203 | 8802 | 三菱地所(株) |
204 | 8804 | 東京建物(株) |
205 | 8830 | 住友不動産(株) |
206 | 9001 | 東武鉄道(株) |
207 | 9005 | 東急(株) |
208 | 9007 | 小田急電鉄(株) |
209 | 9008 | 京王電鉄(株) |
210 | 9009 | 京成電鉄(株) |
211 | 9020 | 東日本旅客鉄道(株) |
212 | 9021 | 西日本旅客鉄道(株) |
213 | 9022 | 東海旅客鉄道(株) |
214 | 9062 | 日本通運(株) |
215 | 9064 | ヤマトホールディングス(株) |
216 | 9101 | 日本郵船(株) |
217 | 9104 | (株)商船三井 |
218 | 9107 | 川崎汽船(株) |
219 | 9202 | ANAホールディングス(株) |
220 | 9301 | 三菱倉庫(株) |
221 | 9501 | 東京電力ホールディングス(株) |
222 | 9502 | 中部電力(株) |
223 | 9503 | 関西電力(株) |
224 | 9531 | 東京瓦斯(株) |
225 | 9532 | 大阪瓦斯(株) |