wget&grepで簡単クローリング・スクレイピング
モノづくり部の山岸です。
本日はクローリング・スクレイピングのネタをご紹介。
複雑なデータをWebから取ってきたい時は
素直にScrapy等の強力な道具を使ったほうがいいと思いますが、
簡単な処理であればUnixコマンドのみでも十分可能です。
というわけで、本日はwgetとgrepを使った クローリング・スクレイピングを行ってみましょう。
やりたいこと
ここでは当ブログのaboutページ、あばうと - Skywill mono-devより
ブログの投稿数を取得することを目標にしたいと思います。 (下画像赤枠部)
クローリング
クローリングとはクローラーを使ってデータ収集を行うことを言います。
今回はwgetでhttp://www.sw-mono.blog/aboutをダウンロードするだけで完了です。
$ wget http://www.sw-mono.blog/about
スクレイピング
スクレイピングとは取ってきたデータから情報を抜き出す作業のことです。
ブラウザの開発ツール等で取ってきたい要素を前もって確認しておきましょう。
下の画像ではchromeを用いました。
これによりhtmlから<dd>8 記事</dd>
の行を取ってくればいいのが分かりますね。
grepで情報を抜き出すには
その行が唯一となる特徴を考える必要がありますので、
数字が可変であるということを考慮に入れ<dd>8 記事</dd>
を見てみると、
記事</dd>
で特定してあげれば上手くいきそうです。
$ cat about | grep '記事</dd>' <dd>8 記事</dd>
狙った行が返ってきてくれましたね。
あとは数字のみを抜き出すためにsed等を使えばいいでしょう。
$ cat about | grep '記事</dd>' | sed -E 's/[^>]*>([0-9]+).*/\1/' 8
当ブログの投稿数が数字のみで返ってきました!
まとめ
Unixコマンドのみでも簡単なクローリング・スクレイピングが出来るので、
Python・Scrapyを使うほどでもない場合はぜひ試してみてください。
以上です。