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

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

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

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

Q&A

解決済

1回答

873閲覧

【Python】urlから画像をDLできない!

t-_.

総合スコア55

Python 3.x

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

0グッド

0クリップ

投稿2021/08/02 08:11

前提・実現したいこと

pythonでURLから画像をDLしようとしています。
以下のコードを実行すると、エラーも表示されず、実行中のまま動かないです。
(実際は動いているのかもしれませんが。。。)

url

1https://jp.louisvuitton.com/images/is/image/lv/1/PP_VP_L/louis-vuitton-%E3%83%9F%E3%83%8B%E3%83%BB%E3%83%9D%E3%83%AB%E3%83%88%E3%83%95%E3%82%A9%E3%82%A4%E3%83%A6%E3%83%BB%E3%82%B3%E3%83%B3%E3%83%91%E3%82%AF%E3%83%88%E3%83%89%E3%83%BC%E3%83%95%E3%82%A3%E3%83%BC%E3%83%8C-%E3%83%A2%E3%83%8E%E3%82%B0%E3%83%A9%E3%83%A0-%E8%B2%A1%E5%B8%83%EF%BC%86%E5%B0%8F%E7%89%A9--M80724_PM2_Front%20view.png 2https://jp.louisvuitton.com/images/is/image/lv/1/PP_VP_L/louis-vuitton-ミニ・ポルトフォイユ・コンパクトドーフィーヌ-モノグラム-財布&小物--M80724_PM2_Front%20view.png

別のURLだと普通に動くので、
問題は、URLにあると推測しています。
だとしたら、どのようにすれば動くか教えていただけないでしょうか。

幾つか試したのですが、代表例として3つ上げておきます。

該当のソースコード

url = "https://jp.louisvuitton.com/images/is/image/lv/1/PP_VP_L/louis-vuitton-%E3%83%9F%E3%83%8B%E3%83%BB%E3%83%9D%E3%83%AB%E3%83%88%E3%83%95%E3%82%A9%E3%82%A4%E3%83%A6%E3%83%BB%E3%82%B3%E3%83%B3%E3%83%91%E3%82%AF%E3%83%88%E3%83%89%E3%83%BC%E3%83%95%E3%82%A3%E3%83%BC%E3%83%8C-%E3%83%A2%E3%83%8E%E3%82%B0%E3%83%A9%E3%83%A0-%E8%B2%A1%E5%B8%83%EF%BC%86%E5%B0%8F%E7%89%A9--M80724_PM2_Front%20view.png" req = urllib.request.Request(url = url) with urllib.request.urlopen(req) as response: #ココで動かなくなる data = response.read() with open(dst_path, mode = "wb") as f: f.write(data)
url = "https://jp.louisvuitton.com/images/is/image/lv/1/PP_VP_L/louis-vuitton-%E3%83%9F%E3%83%8B%E3%83%BB%E3%83%9D%E3%83%AB%E3%83%88%E3%83%95%E3%82%A9%E3%82%A4%E3%83%A6%E3%83%BB%E3%82%B3%E3%83%B3%E3%83%91%E3%82%AF%E3%83%88%E3%83%89%E3%83%BC%E3%83%95%E3%82%A3%E3%83%BC%E3%83%8C-%E3%83%A2%E3%83%8E%E3%82%B0%E3%83%A9%E3%83%A0-%E8%B2%A1%E5%B8%83%EF%BC%86%E5%B0%8F%E7%89%A9--M80724_PM2_Front%20view.png" response = requests.get(url) #ココで動かなくなる image = response.content with open(file_name, "wb") as f: f.write(image)
import wget ...#動かない。

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

python 3.8.*

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

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

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

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

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

meg_

2021/08/02 08:26

原因がどうかは知りませんが、スクレイピングが禁止されているサイトという可能性はありませんか?
t-_.

2021/08/02 08:45 編集

可能性はあります。 そもそも、禁止だとアクセス自体ができないものなんでしょうか? サーバにキックされてる可能性は低いです。
meg_

2021/08/02 09:59

アクセスしにくくしている可能性はありますね。 また画像の場合、著作権についても侵害しないように注意が必要です。
guest

回答1

0

ベストアンサー

ユーザーエージェントが求められているものと適合していないため応答ないのだと思います。

(追記)
リファラも見ているようです。また、ユーザーエージェントも手元の最新のEdgeのものだとダメでした。
成功したコードを載せておきます。

Python

1import urllib.parse 2import urllib.request 3 4url = "https://jp.louisvuitton.com/images/is/image/lv/1/PP_VP_L/louis-vuitton-%E3%83%9F%E3%83%8B%E3%83%BB%E3%83%9D%E3%83%AB%E3%83%88%E3%83%95%E3%82%A9%E3%82%A4%E3%83%A6%E3%83%BB%E3%82%B3%E3%83%B3%E3%83%91%E3%82%AF%E3%83%88%E3%83%89%E3%83%BC%E3%83%95%E3%82%A3%E3%83%BC%E3%83%8C-%E3%83%A2%E3%83%8E%E3%82%B0%E3%83%A9%E3%83%A0-%E8%B2%A1%E5%B8%83%EF%BC%86%E5%B0%8F%E7%89%A9--M80724_PM2_Front%20view.png" 5headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134', 'Referer': 'https://jp.louisvuitton.com/'} 6req = urllib.request.Request(url, headers=headers) 7data = urllib.request.urlopen(req).read(); 8with open('download.png', mode = "wb") as f: 9 f.write(data)

投稿2021/08/02 08:25

編集2021/08/02 09:56
itagagaki

総合スコア8402

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

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

t-_.

2021/08/02 08:27

ありがとうございます。調べてみます。
t-_.

2021/08/02 08:44

ユーザーエージェントを指定しても駄目でした。 フェイクを使っても駄目でした。。。
itagagaki

2021/08/02 09:56

成功したコードを回答に加えました。
t-_.

2021/08/02 10:42

出来ました!ありがとうございます! 私のはHeaderにRefererがありませんでした。 これがないとできないんですね。。。 凄く助かりました^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問