LoginSignup
7
7

More than 5 years have passed since last update.

nokogiriとopen-uriを使って松屋の店舗数を数えてみる

Last updated at Posted at 2016-04-14

なんか他の用途にも使えそうなのでメモ。

松屋店舗一覧

screencapture-pkg-navitime-co-jp-matsuyafoods-area-list-1460613035945.png

とりあえず各地域の店舗数を全部足し合わせたい。ページのソースを確認してnokogiriで抜き出せそうな要素を探してみると<span>で抜くのが簡単そう。

require 'open-uri'
require 'nokogiri'

URL = "http://pkg.navitime.co.jp/matsuyafoods/area/list"

doc = Nokogiri::HTML(open(URL), nil, 'utf-8')

puts doc.css("span")

これでこんな感じ。
<span><a href="//pkg.navitime.co.jp/matsuyafoods/" onclick="gaTrackEvent(document.title, 'パン屑での遷移/パン屑リスト', '検索トップ');">検索トップ</a></span>
<span>検索結果</span>
<span>(42 件)</span>
<span>(4 件)</span>
<span>(12 件)</span>
<span>(3 件)</span>
<span>(4 件)</span>
<span>(99 件)</span>
<span>(5 件)</span>
<span>(2 件)</span>
<span>(112 件)</span>
<span>(17 件)</span>
<span>(6 件)</span>
<span>(11 件)</span>
<span>(100 件)</span>
<span>(4 件)</span>
<span>(14 件)</span>
<span>(62 件)</span>
<span>(382 件)</span>
<span>(1 件)</span>
<span>(6 件)</span>
<span>(4 件)</span>
<span>(12 件)</span>
<span>(7 件)</span>
<span>(9 件)</span>
<span>(40 件)</span>
<span>(9 件)</span>
<span>(2 件)</span>
<span>(16 件)</span>
<span>(7 件)</span>
<span>(14 件)</span>
<span>(7 件)</span>
<span>(12 件)</span>
<span>(3 件)</span>
<span>(5 件)</span>
<span>(8 件)</span>
<span>(5 件)</span>

これで数字以外を取り除いて足し合わせれば完了。

require 'open-uri'
require 'nokogiri'

URL = "http://pkg.navitime.co.jp/matsuyafoods/area/list"

doc = Nokogiri::HTML(open(URL), nil, 'utf-8')

sum = 0
doc.css("span").each do |row|
  sum += row.text.gsub(/[^0-9]/,"").to_i
end
p sum

出力結果
1046

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7