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

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

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

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

Q&A

1回答

805閲覧

Python 特定のサイトから画像を取得する方法が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2022/07/25 01:42

編集2022/07/25 02:44

提示コードですがアルバムアートワークが欲しいのでproject im@s wiki というサイトからoriginal fileの画像をダウンロードしたいのですがこれするにはどうすればいいのでしょうか?画像のURLを見ると CINDERELLA MASTERの部分がCMという省略されておりこれではCD名を入力してアルバムアートワークをダウンロードいう行為ができません。

おそらく行ること

このページ(https://project-imas.wiki/THE_IDOLM@STER_SHINY_COLORS_SOLO_COLLECTION_-1stLIVE_FLY_TO_THE_SHINY_SKY-)
のソースから<meta>タグで語尾が.jpgのURL(https://images.project-imas.wiki/e/ef/SOLO_COLLECTION_-1stLIVE_FLY_TO_THE_SHINY_SKY-.jpg)を探して
保存

困っていること

おそらく行うことの<meta>タグで語尾が.jpgのURL(https://images.project-imas.wiki/e/ef/SOLO_COLLECTION_-1stLIVE_FLY_TO_THE_SHINY_SKY-.jpg)を探してを探す方法

やりたいこと

アルバム名を入力してそのアルバムのアートワークの高解像度のものをダウンロードしたい。

このページ(https://project-imas.wiki/THE_IDOLM@STER_SHINY_COLORS_SOLO_COLLECTION_-1stLIVE_FLY_TO_THE_SHINY_SKY-)
のアルバムアートワーク画像をクリックした(https://project-imas.wiki/File:SOLO_COLLECTION_-1stLIVE_FLY_TO_THE_SHINY_SKY-.jpg)
のoriginal file URLをクリックした(https://images.project-imas.wiki/e/ef/SOLO_COLLECTION_-1stLIVE_FLY_TO_THE_SHINY_SKY-.jpg)
ページの画像を保存したい

Error
Traceback (most recent call last): File "C:\Users\yw325\Desktop\Main.py", line 14, in <module> if d.startswith("http") and (d.endswith("jpg") or d.endswith("png")): AttributeError: 'NoneType' object has no attribute 'startswith'

参考サイト: http://arduinopid.web.fc2.com/R19.html

py

1from bs4 import BeautifulSoup 2import requests 3img_list = [] 4url = 'https://project-imas.wiki/THE_IDOLM@STER_SHINY_COLORS_SOLO_COLLECTION_-1stLIVE_FLY_TO_THE_SHINY_SKY-' # 任意のurlを指定 5url_cont = BeautifulSoup(requests.get(url).content,'lxml') # url解析 6#img_all = url_cont.find("meta") 7img_all = url_cont.find_all("meta") 8 9 10 11 12for d in img_all: # imgタグ情報を一つずつ抽出 13 d = d.get("content") 14 if d.startswith("http") and (d.endswith("jpg") or d.endswith("png")): 15 print(d); 16 img_list.append(d) # srcの末尾が.jpgか.pngの場合リストに追加 17 18 19 20 21 22for img_data in img_list: # 画像データをファイルに保存 23 with open(img_data.split('/')[-1], 'wb') as f: 24 f.write(requests.get(img_data).content) # ファイル保存 25 26 print(img_data.split('/')[-1]) # 保存ファイル名出力 27 28 29 30 31""" 32url_image = BeautifulSoup(requests.get(img_list[0]).content,'lxml') # url解析 33 34 35for img_data in img_list: # 画像データをファイルに保存 36 with open(img_data.split('/')[-1], 'wb') as f: 37 f.write(requests.get(url_image).content) # ファイル保存 38 39 print(img_data.split('/')[-1]) # 保存ファイル名出力 40""" 41

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

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

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

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

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

fumu7

2022/07/25 02:18

欲しい画像のURL:をクリックして標示される画面には、 「No higher resolution available.(直訳:これより解像度の高いものは、ありません) CM_3Chord_for_the_Rock!.jpg ‎(500 × 500 pixels, file size: 136 KB, MIME type: image/jpeg)」 と説明されています。 質問者が、高解像度の画像が存在する(プログラムで高解像度の画像が取得可能)と思われている理由は何ですか?
guest

回答1

0

コメントとコードがぜんぜん一致してないとコードを読む人に負担がかかるので直してください。

python

1 d = d.get("content") # src情報を取得 2 if d.startswith("http") and (d.endswith("jpg") or d.endswith("png")):

content 属性のない <meta> が存在すれば d が None になるのでここでクラッシュします。ちゃんと対処しましょう。

投稿2022/07/25 02:38

int32_t

総合スコア20850

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

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

退会済みユーザー

退会済みユーザー

2022/07/25 02:47

質問ですがその場合どうればいいのでしょうか?「content 属性のない <meta> が存在すれば d が None になるのでここでクラッシュします。ちゃんと対処しましょう」文の[content 属性のない <meta> が存在すれば d が None]とはどういう意味でしょうか?
int32_t

2022/07/25 02:51

回答で引用しているコードで、変数 d の値が None になるという意味です。None に対して startswith() や endswith() は呼べないので、None ではないことを確認してから startswith() やらを呼びましょう。
退会済みユーザー

退会済みユーザー

2022/07/25 03:01

以下ようにして質問文のエラーは回避できましたが画像の収集ができません。これはどうやったらいいのでしょうか・ for d in img_all: # imgタグ情報を一つずつ抽出 d = d.get("http") # src情報を取得 if(d != NoneType): if d.startswith("http") and (d.endswith("jpg") or d.endswith("png")): print(d); img_list.append(d) # srcの末尾が.jpgか.pngの場合リストに追加
int32_t

2022/07/25 03:14

「収集ができません」では具体的な状況が不明なので、他者には何とも言えないです。可能なかぎり自分で調べてデバッグしましょう。 * img_list に期待した結果が入ったか確認 * requests.get(img_data).content でデータが取れたか確認 などなど。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問