今まではどうやっていたかというと TextExpander を使って
1 |
http://www.google.co.jp/search?q=inposttitle:Check+site:azur256.blogspot.com&tbs=qdr:w1,sbd:1 |
という検索を実行。
その結果を 1 つずつ Safari で開いてから TextExpander で AppleScript を使って一覧コンテンツを作っていました。
しかし、毎朝完全に定型化された作業をしているんだから自動化できるはず、ということでやってみました。
Webスクレイピング
Web スクレイピングとは、Webコンテンツからデータを抽出するための技術です。たまに悪いイメージで使われることもありますが、正しい目的で使えば非常に有効な技術だと思います。ちなみに、Wikipedia では スクリーンスクレイピング というキーワードの一つとして Web スクレイピングが記載されています。
スクリーンスクレイピング(Screen scraping)とは、あるプログラムが人間に読みやすい形で出力した結果からデータを抽出する技術のこと。
via: スクリーンスクレイピング | Wikipedia
今回は Google の検索結果を使いたいのですが、Google は検索 API の公開を止めてしまったため、この Web スクレイピングで解決したいと思います。
Rubyでスクレイピング
どうやら Ruby では Mechanize という Gem を使えば良いようです。検索すると Hpricot についての記事も見かけますが、既にメンテナンスされていないようなので、今回は Mechanize Gem を使います。Mechanize Gem のインストールはターミナルを開いて以下のコマンドを打ち込むだけです。
1 |
> sudo gem install --remote mechanize |
あとは、この mechanize を使ったコードを書いて、Web ページから必要な要素を取り出すだけ。
何をすれば良いのか?
普段、自分が手動でやっていることを代わりにやらせれば良いので、まずは手動でやっていることを振り返ってみます。- 自分のサイトをGoogleを使って検索する
- 検索結果を 1 つずつ開く
- 関連エントリのリンクを作る
そのため、Ruby で自動化させるには、こんなやり方になります。
- 自分のサイトをGoogleを使って検索する。
- 検索結果の一覧を mechanize で解析して URL とタイトルを取り出す
- URL とタイトルからリンクを作る
それから、タイトルからブログ名を外したり、Blogger は ccTLD の関係で blogger.jp にリダイレクトしてしまうので URL のドメインを blogger.com に変えたりしています。
整理すると以下のような流れに。
- 自分のサイトをGoogleを使って検索する。
- 検索結果の一覧を mechanize で解析して URLを取り出す
- URLを踏んでページ情報からタイトルとURLを抜き出す
- タイトルから空白をトリムするのとブログ名を取り除く
- URL のドメインを置換する
- URL とタイトルからリンクを作る
ラクチンラクチン。
ソースはこんな感じになりました。
また何かネタを思いついたら書くと思います。
関連するエントリ
最後まで読んでいただきありがとうございます。
左のアイコンをクリックして、このブログを Feedly に登録していただけると嬉しいです
Facebook ページでも情報を発信していますのでよろしかったら「いいね!」をお願いします
RSSリーダへの登録は こちら からどうぞ。
コメントを残す