質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2237閲覧

クローラーのプログラムを実行しても画像が収集されない問題について

退会済みユーザー

退会済みユーザー

総合スコア0

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/07 12:07

編集2020/05/07 13:54

前提・実現したいこと

Jupyter notebook上でGoogleImageCrawlerを使ったクローラーのアプリを実行し、リストに入っているキーワードの検索結果画像を収集しようとしています。

発生している問題・エラーメッセージ

現在のプログラムを実行するとエラーは出ずにクローラーが走るのですが、プログラム実行後のフォルダを見ても、画像データが1つも入っていないという状態です。

生成されるフォルダは、
「fishimages/アイゴ/test」、「fishimages/オニカサゴ/test」...となっており、各魚名のフォルダの配下に「train」フォルダが生成されません。

正しく画像データが保存されるようにするには、何を修正すればいいのでしょうか。

該当のソースコード

『データ収集からWebアプリ開発まで 実践で学ぶ機械学習活用ガイド』サポートサイトよりダウンロードしたファイル内のコードです。

フォルダ構成はkikagaku_sample/chapter5/5-2.ipynbとなっており、5-2.ipynbと同じ階層にfishimagesという画像データを保存するフォルダを作成した上で、以下のプログラムを実行しています。

5-2.ipynb

Python

1import os # …① 2import glob # …② 3import random # …③ 4import shutil # …④ 5from icrawler.builtin import GoogleImageCrawler # …⑤ 6 7# 画像を保存するルートディレクトリパス 8root_dir = 'fishimages/'# …⑥ 9# 魚画像検索キーワードリスト 10fishnames = ['アイゴ', 'オニカサゴ', 'カサゴ', 'カワハギ', 'キュウセンベラ', 11 'クサフグ', 'ソウシハギ', 'マハゼ', 'マアジ', 'マイワシ', 'ミノカサゴ', 12 'メジナ', 'メバル'] 13# 収集画像データ数 14data_count = 100 15 16def crawl_image(fishname, datacount, root_dir): 17 18 crawler = GoogleImageCrawler(storage={'root_dir':root_dir + fishname + '/train'}) 19 # …⑦ 20 21 filters = dict( 22 size='large', 23 type='photo' 24 ) 25 # …⑧ 26 27 # クローリングの実行 …⑨ 28 crawler.crawl( 29 keyword=fishname, 30 filters=filters, 31 max_num=datacount 32 ) 33 34 # 前回実行時のtestディレクトリが存在する場合、ファイルをすべて削除する 35 if os.path.isdir(root_dir + fishname + '/test'): 36 shutil.rmtree(root_dir + fishname + '/test') 37 os.makedirs(root_dir + fishname + '/test') 38 # …⑩ 39 40 # ダウンロードファイルのリストを取得 …⑪ 41 filelist = glob.glob(root_dir + fishname + '/train/*') 42 # ダウンロード数の2割をtestデータとして抽出 …⑫ 43 test_ratio = 0.2 44 testfiles = random.sample(filelist, int(len(filelist) * test_ratio)) 45 46 for testfile in testfiles: 47 shutil.move(testfile, root_dir + fishname + '/test/') 48 49# 魚画像キーワードの数だけクローリングを実行 50for fishname in fishnames: 51 crawl_image(fishname, data_count, root_dir)

試したこと

pip install icrawler

でインストールは完了しています。

また、以下のようにクローラーは動いているのは確認済みです。

2020-05-07 18:30:37,916 - INFO - icrawler.crawler - start crawling... 2020-05-07 18:30:37,917 - INFO - icrawler.crawler - starting 1 feeder threads... 2020-05-07 18:30:37,920 - INFO - feeder - thread feeder-001 exit 2020-05-07 18:30:37,920 - INFO - icrawler.crawler - starting 1 parser threads... 2020-05-07 18:30:37,924 - INFO - icrawler.crawler - starting 1 downloader threads... 2020-05-07 18:30:38,610 - INFO - parser - parsing result page https://www.google.com/search?q=%E3%82%A2%E3%82%A4%E3%82%B4&ijn=0&start=0&tbs=isz%3Al%2Citp%3Aphoto&tbm=isch 2020-05-07 18:30:40,681 - INFO - parser - no more page urls for thread parser-001 to parse 2020-05-07 18:30:40,682 - INFO - parser - thread parser-001 exit 2020-05-07 18:30:42,932 - INFO - downloader - no more download task for thread downloader-001 2020-05-07 18:30:42,935 - INFO - downloader - thread downloader-001 exit 2020-05-07 18:30:42,948 - INFO - icrawler.crawler - Crawling task done!

補足情報(FW/ツールのバージョンなど)

jupyter-notebook : 6.0.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/05/07 13:37

「プログラム実行後のフォルダ」とは例えば「fishimages/アイゴ/train」で、そのフォルダの中にファイルがないということでしょうか?それともそもそも「fishimages/アイゴ/train」フォルダがないのでしょうか?
退会済みユーザー

退会済みユーザー

2020/05/07 13:52

「fishimages/アイゴ/test」「fishimages/オニカサゴ/test」...のフォルダは作成されるのですが、「fishimages/アイゴ/train」のフォルダはありません。フォルダがないため、画像もありません。
meg_

2020/05/07 13:57

どうやら今Googleは出来ないようなので、他のエンジンを使用してみてはどうでしょうか?
退会済みユーザー

退会済みユーザー

2020/05/07 13:57

ご紹介いただきましてありがとうございます。 恐縮ですが、GitHub上のやりとりを拝読しても理解できず、解決したのかどうか、コードの解決法について情報を得られませんでした。
guest

回答1

0

ベストアンサー

GoogleImageCrawlerの部分をBingImageCrawlerに置き換えたら動きます。

投稿2020/05/13 09:11

Rondon7251

総合スコア89

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/13 13:22

ご回答いただきましてありがとうございます。 現在は、Googleの画像をクロールする方法はないのでしょうか。
Rondon7251

2020/05/16 04:45

Googleの画像をクロールするのは現在使えないはずです。 もし進んでましたら、200ページのbase_urlに何を入れるか知っていましたら教えてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問