現在rubyを使ってWEBスクレイピングをしてとってきたXMLの要素をハッシュに保存し配列にして出力する作業をしているのですが、
以下のコードですと一つの配列に複数のハッシュが入っている状況です。
これを一つの配列につき一つのハッシュにしたいのですが解決方法がわからないので詳しい方いらっしゃいましたらご教示ください。
*新たに格納する変数はoffice_detailです。
ruby
1require "net/http" 2require "rexml/document" 3 4uri = URI.parse("URL") 5http = Net::HTTP.new(uri.host, uri.port) 6http.use_ssl = uri.scheme === "https" 7 8headers = { "Content-Type" => "text/html;charset=utf-8" } 9response = http.get(uri.path, headers) 10 11response.code # status code 12body = response.body # response body 13text = body.force_encoding("UTF-8") 14p text.encoding 15 16 17array_office = [] 18 19tables = text.scan(/<table.*?</table>/) 20 21 22tables.each do |tbl| 23 ths = tbl.scan(/<th.*?</th>/) 24 ths.length 25 26 tds = tbl.scan(/<td.*?</td>/) 27 28 29 office = {} 30 for num in 1..(ths.length) do 31 title = ths[num-1].sub(/<th>/, '').sub(/</th>/, '') 32 value = tds[num-1].sub(/<td>/, '').sub(/</td>/, '').gsub(/<br>/, ' ') 33 office.store(title, value) 34 end 35 36 37 array_office.push(office) 38 39end
現在の出力結果
[{"拠点名"=>"本社", "郵便番号"=>"〒106-6231", "住所"=>"東京都港区六本木3-2-1 六本木グランドタワー31F", "アクセス"=>"東京メトロ南北線「六本木一丁目」駅直結"}, {"拠点名"=>"札幌オフィス", "郵便番号"=>"〒060-0001", "住所"=>"北海道札幌市中央区北1条西3-3 札幌MNビル12F", "アクセス"=>"地下鉄南北線「札幌」駅 地下鉄東西線「大通」駅"}]
変更したい出力結果
[{"拠点名"=>"本社", "郵便番号"=>"〒106-6231", "住所"=>"東京都港区六本木3-2-1 六本木グランドタワー31F", "アクセス"=>"東京メトロ南北線「六本木一丁目」駅直結"}]
[ {"拠点名"=>"札幌オフィス", "郵便番号"=>"〒060-0001", "住所"=>"北海道札幌市中央区北1条西3-3 札幌MNビル12F", "アクセス"=>"地下鉄南北線「札幌」駅 地下鉄東西線「大通」駅"}]
回答1件
あなたの回答
tips
プレビュー