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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Python

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

PyCharm

エディター・開発ツール

Q&A

解決済

1回答

3278閲覧

画像ファイルの一括保存

kolobokkule

総合スコア19

Python 3.x

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

Python

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

PyCharm

エディター・開発ツール

0グッド

0クリップ

投稿2018/11/19 11:27

画像ファイルの一括保存

ひとつのページにある画像ファイルを一括保存したいのですが、ローカルファイルに作成したディレクトリに1つしか保存することができません。

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

エラーメッセージは出ていません

該当のソースコード

python3

1#! python3 2# 画像サイトのダウンローダー 3# 検索結果の画像10枚をダウンロードする 4 5import requests, bs4, os 6 7# 保存先の作成 8url = 'http://gensun.org/pid/138658' 9os.makedirs('gazo', exist_ok=True) 10 11res = requests.get(url) 12res.raise_for_status() 13 14soup = bs4.BeautifulSoup(res.text) 15 16# jogを抜き出す 17gazo_elem = soup.select('.imagebox img') 18if gazo_elem == []: 19 print('画像が見つかりませんでした。') 20else: 21 for i in range(10): 22 gazo_url = gazo_elem[0].get('src') 23 # 画像をダウンロードする 24 print('画像をダウンロード中{}...'.format(gazo_url)) 25 res = requests.get(gazo_url) 26 res.raise_for_status() 27 28 #画像を./gazoに保存する 29 gazo_file = open(os.path.join('gazo',os.path.basename(gazo_url)),'wb') 30 for chunk in res.iter_content(100000): 31 gazo_file.write(chunk) 32 gazo_file.close() 33 34 35print('完了')

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

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

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

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

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

guest

回答1

0

ベストアンサー

ループ内で毎回0番目の画像のURLを取り出しているためです。

python

1gazo_url = gazo_elem[0].get('src')

書き換えるとしたらこんな感じでしょうか。

python

1# 中略 2else: 3 for elem in gazo_elem[:10]: 4 gazo_url = elem.get('src') 5 # 画像をダウンロードする 6 print('画像をダウンロード中{}...'.format(gazo_url)) 7 res = requests.get(gazo_url) 8 res.raise_for_status() 9 10 #画像を./gazoに保存する 11 gazo_file = open(os.path.join('gazo',os.path.basename(gazo_url)),'wb') 12 for chunk in res.iter_content(100000): 13 gazo_file.write(chunk) 14 gazo_file.close()

投稿2018/11/19 11:45

編集2018/11/19 11:46
hayataka2049

総合スコア30933

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

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

kolobokkule

2018/11/19 12:10

原因がわかりとてもすっきりしました。ありがとうございます。 しかしいただいたものを試してみると、エラーメッセージ Traceback (most recent call last): File "C:/Users/A14-0325/PycharmProjects/test/downloader.py", line 22, in <module> gazo_url = gazo_elem.get('src') AttributeError: 'list' object has no attribute 'get' が出てしまいました。 gazo_urlがリストとして成り立っていない?ということでしょうか? まだ学びはじめなもので、この点お聞かせいただけると嬉しいです。
kolobokkule

2018/11/19 23:17

解決いたしました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問