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

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

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

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

2851閲覧

Seleniumで画像をダウンロードするとHTTPエラー403で止まってしまう事がある

nogisuki

総合スコア3

Python 3.x

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2022/02/14 02:58

編集2022/02/14 03:33

調べたところユーザーエージェントを偽装したら解決するとみて設定をしたのですが、
同じくhttps://blog.nogizaka46.com/renka.iwamoto/img/2022/01/05/8211111/0001.heic
でエラーで弾かれてしまいました。driver.getに直接上記のurlを入れてアクセスを試したところ問題はなかったので、for文で何か間違っていると見ていますが、分かりませんでした。
ご存知の方ご教授お願い致します。

python

1from time import sleep 2from selenium import webdriver 3from selenium.webdriver.common.keys import Keys 4import re 5import urllib 6 7options = webdriver.ChromeOptions() 8UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36' 9options.add_argument('--user-agent=' + UA) 10driver = webdriver.Chrome(chrome_options=options,executable_path='chromedriver') 11url = "https://blog.nogizaka46.com/" 12member_name = "renka.iwamoto" #名前.名字 13driver.get(url+member_name) 14 15base_element = driver.find_element_by_css_selector('.right2in') 16img_list =base_element.find_elements_by_css_selector('img') 17 18print(len(img_list)) 19for i,ele in enumerate(img_list): 20 link = ele.get_attribute('src') 21 sleep(1) 22 print(link) 23 urllib.request.urlretrieve(link,'./画像/'+str(i)+'.jpg') 24

出力結果
20
https://img.nogizaka46.com/blog/renka.iwamoto/img/2022/02/02/8551656/0001.jpeg
https://img.nogizaka46.com/blog/renka.iwamoto/img/2022/02/02/8551656/0000.jpeg
https://img.nogizaka46.com/blog/renka.iwamoto/img/2022/02/02/8551656/0002.jpeg
https://img.nogizaka46.com/blog/renka.iwamoto/img/2022/02/02/8551656/0003.jpeg
https://img.nogizaka46.com/blog/renka.iwamoto/img/2022/02/02/8551656/0004.jpeg
https://blog.nogizaka46.com/renka.iwamoto/img/2022/01/05/8211111/0001.heic

HTTPError: HTTP Error 403: Forbidden

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

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

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

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

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

melian

2022/02/14 03:23

driver.get(url) と書かれていますが、これは driver.get(url + member_name) ではないでしょうか?
nogisuki

2022/02/14 03:34

ご指摘ありがとうございます。 実際のコードではdriver.get(url + member_name)となっていましたので、記述ミスになります。
guest

回答1

0

ベストアンサー

urllib.request にも User-Agent を設定してみてはどうでしょうか。

python

1base_element = driver.find_element_by_css_selector('.right2in') 2img_list =base_element.find_elements_by_css_selector('img') 3 4# set User-Agent to HTTP header in urllib.request 5opener = urllib.request.build_opener() 6opener.addheaders = [('User-agent', UA)] 7urllib.request.install_opener(opener) 8 9print(len(img_list)) 10for i,ele in enumerate(img_list): 11 link = ele.get_attribute('src') 12 sleep(1) 13 print(link) 14 urllib.request.urlretrieve(link,'./画像/'+str(i)+'.jpg')

投稿2022/02/14 03:39

melian

総合スコア19771

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

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

nogisuki

2022/02/14 03:47

ありがとうございます。 urllib.requestにも設定しましたら無事保存できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問