RubyでWebスクレイピングしたい(ダウンロード編) ~Google画像検索で検索した画像をダウンロードしてくるgemを作りました~
ダウンロード編として、スクレイピングの方法を解説する記事を書く予定だったのですが、gemの公開をもって解説ということにします。 特にメンテしていく気は無いのですが、スクレイピングで色々とコツが必要だったので忘れないようにgemとして形にしました。
使い方
検索ワードと画像の数を入れて起動します。
$ gem install google_image_scraper $ google_image_scraper 猫 10
裏で地道にダウンロードしているのでそこそこ時間かかります。 コマンドが正常終了すると、こんなかんじで画像が保存されています。
仕組み
下記6段階のステップを踏んでダウンロードします。
- Google画像検索で画像を検索
- 検索された画像をクリックして右側に詳細を表示
- 高画質な画像がダウンロードされるまで待つ
- 3.を繰り返す
- 画面をスクロールして追加の画像を読み込む
- 2に戻る
Google画像検索のHTMLの構造が複雑だったので、けっこう無理のある実装をしました。HTMLの構造が変わったらたちまち壊れることが想定されます。
- のステップは工夫が必要なところでした。 2.で表示された詳細ウィジェットに表示している画像は、最初は画質が荒いサムネイルなのです。遅延読み込みをしているらしく、少し待つと掲載元サイトにアップロードされている画像への直リンクに差し替えられて、高画質に表示されます。
かなり壊れやすい実装なのと、機能も最低限しか無いです。メンテしていくかは未定です。