ChatGPTに、指定したキーワードの画像を自動収集してもらうプログラムを書いてもらった
ChatGPTに、指定したキーワードの画像を自動収集してもらうプログラムを書いてもらいました。
結論から書きますが、最初はpythonのgoogle-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までとか。