ShellWebページから情報収集をしてくる処理をスクレイピングって言うらしい。シェル芸勉強会でもスクレイピングみたいなことをやった。福岡県久留米市では、オープンデータカタログとして人口情報をCSVにて公開している。久留米市:オープンデータカタログただ、過去の情報はExcel形式での公開。xlsx形式ならばエクシェル芸で捌けそうであるが、残念ながら旧形式のようだ。平成25年より新しいデータについては、HTMLでWebページとして公開されている。スクレイピングでCSVにした方が扱いやすいのでは?ということで、人口情報が記載されたWebページからCSV作成して保存するスクレイピングなシェルスクリプトを作ってみた。Yosemiteだが、Linux、FreeBSDなどでも動くはず。必要なコマンドGNU系のツールについては、OSXやFreeBSDの場合は追加インストールしよう。Linuxの場合はgsedをsedと読み替えること。awkでは作成したスクリプトを順次紹介。実行するときは適当な一時ディレクトリを作成し、その中にスクリプトをコピペして保存して利用のこと。カレントディレクトリにCSVファイルがたくさん出来るので要注意。久留米市の人口情報は下記のようなURLで、HTMLのTableを使って表現されている。平成27年7月1日現在まずは中核となる、上記のようなWebページからCSVに保存するスクリプトを作成。スクリプトのファイル名はcsv_save.sh。filename".csv"}'使い方はこちら。人口情報WebページのURLを指定して実行すると、TableのCaptionをファイル名としたCSVファイルに保存する。人口情報へのURLリストは、下記のようなWebページになっている。年齢別人口ここからリンクURLを抽出して一覧にするスクリプトを作成。スクリプトのファイル名はlist_url.sh。"s;^;$1;"使い方はこちら。下記のWebページへのURLを指定して実行すると、人口情報WebページへのリンクURLを抽出する。下の「過去データ」はxls形式のデータだけなので外す。http://www.city.kurume.fukuoka.jp/1080shisei/2010shoukai/3040toukei/4030nenreijinkou/http://www.city.kurume.fukuoka.jp/1080shisei/2010shoukai/3040toukei/4030nenreijinkou/2015-0703-1719-442.htmlhttp://www.city.kurume.fukuoka.jp/1080shisei/2010shoukai/3040toukei/4030nenreijinkou/2015-0603-1706-442.htmlhttp://www.city.kurume.fukuoka.jp/1080shisei/2010shoukai/3040toukei/4030nenreijinkou/2015-0508-1537-442.htmlhttp://www.city.kurume.fukuoka.jp/1080shisei/2010shoukai/3040toukei/4030nenreijinkou/2015-0406-1701-442.htmlhttp://www.city.kurume.fukuoka.jp/1080shisei/2010shoukai/3040toukei/4030nenreijinkou/2015-0305-0957-442.html....これと先ほどのcsv_save.shを組み合わせることでCSVファイルを一括作成する。実際に使うときは、連続でたくさんのURLにアクセスするとよくない気がするので、1秒毎に休みながら連続実行。久留米市の人口情報は、上記の年齢別だけでなく、校区別、町別でも公開されている。上記3種類の人口情報を一括でCSV保存するスクリプトを作成。スクリプトのファイル名はkurume_getopendata_tocsv.sh。1'このスクリプトを実行すると、下記のようにたくさんのCSVファイルが出来る。最初のスクレイピング本体スクリプトcsv_save.shよりも、一覧作成してどうやって連続実行させるか?の方が意外と悩んでしまった。上記のように、スクレイピングをする処理、URL一覧を作る処理をそれぞれコマンドにしてしまい、xargsで連続実行するというのがスッキリしていいのではないかと思う。単機能なフィルタコマンドを作る。結局UNIX哲学に則るのが一番シンプルになるというのと実感したのであった。はてなブログPro情報処理ってもっとシンプルにならないだろうか?PKI関連、RubyやPHP等のLL、シェルスクリプト、シェル芸、ユニケージ見習い未満。シェルスクリプトとシェル芸はきっと違うんですよ。JPはてなブログをはじめよう!papiroさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。