水曜日, 2月 23, 2022

【python】1番手軽な画像収集方法【webスクレイピング】【画像収集】【データセット】

画像を処理するAIのデータセットなどで画像を収集しなければならない時が時々ありますよね。
みなさんは画像収集する時どのようにして集めていますか?webスクレイピングの有名な手段としては、

  • selenium
  • Beautiful Soup
  • Requests
  • Scrapy

などがあると思いますが、画像収集という点だけに絞れば、もっと手軽に試せる手段があります。それがicrawlerです。

icrawlerとは

ウェブクローラ用のライブラリで画像や動画をスクレイピングすることができます。

使い方

まず、pipでicrawlerをインストールします。(既にインストールしている人はスキップしてください。)ターミナルやコマンドプロンプトなどで

pip install icrawler

です。
次に、インポートします。現在、icrawlerが機能する検索エンジンはbaidu・bingのみです。googleも対応していたようですが、現在は対策されたためエラーが出て使えません。日本人がbaiduを使うときはよっぽどないと思いますのでbingを使うという体で進めていきます。bingを使うときのicrawlerをインポートするコードは

from icrawler.builtin import BingImageCrawler

です。

crawler = BingImageCrawler(downloader_threads=4,storage={"root_dir": "apple"})

このコードはどの検索エンジンで何スレッドでクロールし、その結果をどこに保存するか決めています。このコードではbingで4スレッドでクロールをし、結果をappleというフォルダに入れるという設定になっています。

crawler.crawl(keyword="りんご", max_num=10)

このコードはどんなワードで検索し、その画像を何個保存するのかを決めています。このコードはりんごというキーワードで検索し、出てきた画像を10個保存するということになっています。

まとめ

これらをまとめると

from icrawler.builtin import BingImageCrawler
crawler = BingImageCrawler(downloader_threads=4,storage={"root_dir": "apple"})
crawler.crawl(keyword="りんご", max_num=10)

となります。Requestsなどで書くよりも遥かに短いです。手軽なので、試してみてエラーが出て動かないとなってから変えてみても遅くないというのがメリットだと思います。しかし、ここまで書いておきながら時間があるのであれば他のライブラリは圧倒的に汎用性が高いので画像のクロールを通してseleniumやRequestsなどの他のライブラリに慣れておくというのは悪くないのかも・・・とも思ってしまいました。

コメント記入

次のフォームにコメントを記入してください。


管理者用

Menu

色々あってメモ帳がわりのブログ的なものを作ることになりましたが、wordpressアレルギーなるものが発病したので代わりにflatpressという物を使って作ってみました。

プログラム関連のことを書いていこうと思っています。

ちなみに作った物やwebサイトはここに置いています。

flatpressの初期のテーマがどうしても気に入らなくて色々探しているうちに何が何だかわからなくなって、

ブログにふさわしいテーマってなんだ?

と自問自答しているうちに結局デフォルトのものに近い物を使ってしまった。
なんかいいテーマないですかね?