ChatGPTに、指定したキーワードの画像を自動収集してもらうプログラムを書いてもらった

ChatGPTに、指定したキーワードの画像を自動収集してもらうプログラムを書いてもらいました。

結論から書きますが、最初はpythongoogle-images-download ライブラリを利用したコードを書いてくれたのですが、このライブラリ自体が上手く動かなかったので、諦めてBingImageCrawlerを指定するように質問しました。

 

ChatGPTへの質問文:

pythonのBingImageCrawlerを利用して、画像を自動で取得するプログラムを書いてください。収集する画像はキーワードで指定できるようにしてください。取得した画像の保存先を指定できるようにしてください。収集する画像の上限数を指定できるようにしてください。

 

回答:

以下は、PythonのBingImageCrawlerを利用して、画像を自動で取得するプログラムの例です。このプログラムでは、キーワード、保存先、および収集する画像の上限数を引数として渡すことができます。


from icrawler.builtin import BingImageCrawler

def crawl_images(keyword, save_dir, max_num):
    crawler = BingImageCrawler(downloader_threads=4, storage={'root_dir': save_dir})
    crawler.crawl(keyword=keyword, max_num=max_num) 
 
if __name__ == '__main__': 
    keyword = input("Enter a keyword: ") 
    save_dir = input("Enter a save directory path: ") 
    max_num = int(input("Enter the maximum number of images to download: ")) 
    crawl_images(keyword, save_dir, max_num)

このプログラムでは、icrawler.builtinモジュールからBingImageCrawlerクラスをインポートし、crawl_images関数を定義しています。crawl_images関数では、BingImageCrawlerオブジェクトを作成し、キーワード、保存先、および収集する画像の上限数を引数として渡します。BingImageCrawlerオブジェクトには、ダウンロードに使用するスレッド数と保存先のルートディレクトリを指定する引数もあります。

結果:

以下のように問題なく実行してたくさんの画像が得られました。画像の保存先はプログラムの実行しているフォルダ(カレント)の直下に、指定したフォルダ名で生成されて、その中に格納されます。

 

今回はたまたま、Mac上で実行しました。

上限数は1000と指定しましたが、実際に取得できたのは400程度でした。これは検索エンジン側で制限をかけているようです。googleのライブラリだと100までとか。