「検索エンジンの検索結果から画像を大量に取得したい」
「画像を一括でダウンロードしたい」
このような場合には、icrawlerがオススメです。
この記事では、画像の一括ダウンロードができるicrawlerについて解説しています。
本記事の内容
- icrawlerとは?
- icrawlerのシステム要件
- icrawlerのインストール
- icrawlerの動作確認
それでは、上記に沿って解説していきます。
icrawlerとは?
icrawlerとは、Webクローラのミニフレームワークです。
Scrapyの軽量版と言えます。
そして、icrawlerは以下の検索エンジンに対応しています。
- Bing
- Baidu
これらの検索エンジンでの検索結果をクローリングすることができます。
つまり、検索エンジンの検索結果をスクレイピングできるということです。
検索エンジンを対象にする以外では、以下のサイト・方法でクローリングが可能になります。
- Flickr
- General greedy crawl(ウェブサイトからの画像収集)
- UrlList(urlリストで指定されたすべての画像の取得)
icrawlerは、基本的には画像収集で利用されることが多いです。
例えば、「猫」の画像をたくさん必要となった場合にBingで検索したとします。
icrawlerを用いれば、これらの画像を一気に取得することが可能になります。
なお、icrawlerは動画やテキストなども取得することが可能です。
以上、icrawlerについて説明しました。
次は、icrawlerのシステム要件を説明します。
icrawlerのシステム要件
現時点(2022年7月末)でのicrawlerの最新バージョンは、0.6.6となります。
この最新バージョンは、2021年8月14日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
サポート対象となるPythonのバージョンは、以下となっています。
- Python 2.7
- Python 3.5
- Python 3.6
- Python 3.7
メンテナンスが行き届いていないように感じます。
基本的には、以下のPython公式開発サイクルに準拠していることが望ましいです。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
Python3.7で動けば、それ以降でも問題はないとは思います。
実際、Python 3.10でも機能していますからね。
以上、icrawlerのシステム要件を説明しました。
次は、icrawlerのインストールを説明します。
icrawlerのインストール
検証は、次のバージョンのPythonで行います。
$ python -V Python 3.10.2
まずは、現状のインストール済みパッケージを確認しておきます。
$ pip list Package Version ---------- ------- pip 22.2 setuptools 63.2.0 wheel 0.36.2
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、icrawlerのインストールです。
icrawlerのインストールは、以下のコマンドとなります。
pip install icrawler
icrawlerのインストールには、少し時間がかかります。
終了したら、どんなパッケージがインストールされたのかを確認します。
$ pip list Package Version ------------------ ----------- beautifulsoup4 4.11.1 certifi 2022.6.15 charset-normalizer 2.1.0 icrawler 0.6.6 idna 3.3 lxml 4.9.1 Pillow 9.2.0 pip 22.2 requests 2.28.1 setuptools 63.2.0 six 1.16.0 soupsieve 2.3.2.post1 urllib3 1.26.11 wheel 0.36.2
icrawlerは、そこそこの数のパッケージに依存しています。
それも、知名度のあるパッケージが多い印象です。
以上、icrawlerのインストールを説明しました。
次は、icrawlerの動作確認を説明します。
icrawlerの動作確認
icrawlerの動作確認を行います。
icrawlerを用いて、Googleの検索結果から画像を取得してみましょう。
用いるコードは、以下。
from icrawler.builtin import GoogleImageCrawler google_crawler = GoogleImageCrawler(storage={'root_dir': 'result'}) google_crawler.crawl(keyword='犬', max_num=100)
コードの内容は、「犬」の検索結果から最大で100個の画像を取得します。
ただし、実際に100個取得できるわけではありません。
上記コードを実行した結果は、以下のように表示されます。
2022-07-27 20:42:54,502 - INFO - icrawler.crawler - start crawling... 2022-07-27 20:42:54,502 - INFO - icrawler.crawler - starting 1 feeder threads... 2022-07-27 20:42:54,502 - INFO - feeder - thread feeder-001 exit 2022-07-27 20:42:54,503 - INFO - icrawler.crawler - starting 1 parser threads... 2022-07-27 20:42:54,503 - INFO - icrawler.crawler - starting 1 downloader threads... 2022-07-27 20:42:59,504 - INFO - downloader - downloader-001 is waiting for new download tasks 2022-07-27 20:43:00,156 - INFO - parser - parsing result page https://www.google.com/search?q=%E7%8A%AC&ijn=0&start=0&tbs=&tbm=isch 2022-07-27 20:43:05,926 - INFO - downloader - image #1 https://skywardplus.jal.co.jp/wp-content/uploads/2020/07/shosai_dogday_main.jpg 2022-07-27 20:43:06,054 - INFO - downloader - image #2 https://image.itmedia.co.jp/business/articles/2204/17/l_mk_inu_000.jpg 2022-07-27 20:43:06,235 - INFO - downloader - image #3 https://pshoken.co.jp/uploads/2020/01/27/dog-symptom019a.jpg 〜 2022-07-27 20:43:23,252 - INFO - downloader - image #84 https://img.wanqol.com/2021/04/c351ea11-sigh_p01.jpg 2022-07-27 20:43:23,401 - INFO - downloader - image #85 https://www.aeonpet.com/assets/ap_special_detail/ap_special_detail-img-285.jpg 2022-07-27 20:43:23,571 - INFO - downloader - image #86 https://kahoku.news/images/2022/05/03/20220503khn000020/001_size3.jpg 2022-07-27 20:43:24,792 - INFO - parser - no more page urls for thread parser-001 to parse 2022-07-27 20:43:24,792 - INFO - parser - thread parser-001 exit 2022-07-27 20:43:28,572 - INFO - downloader - no more download task for thread downloader-001 2022-07-27 20:43:28,572 - INFO - downloader - thread downloader-001 exit 2022-07-27 20:43:29,540 - INFO - icrawler.crawler - Crawling task done!
結果的には、86個の画像を収集できています。
処理にかかった時間は、30秒ちょっとですね。
画像は、「result」ディレクトリに保存されています。
ディレクトリは自動的に作成されるため、予め作成する必要はありません。
「result」ディレクトリは、次のような状況です。
Googleで「犬」を検索した結果画面とほぼ同じモノを確認できます。
以上、icrawlerの動作確認を説明しました。