🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
スクレイピング

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Python

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

selenium

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

Q&A

解決済

2回答

7988閲覧

Selenium ChromeDriverで「名前をつけて画像を保存」をする方法

退会済みユーザー

退会済みユーザー

総合スコア0

スクレイピング

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Python

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

selenium

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

0グッド

0クリップ

投稿2019/11/23 10:05

編集2019/11/24 04:43

Selenium ChromeDriverで「名前をつけて画像を保存」をしたいです。

Selenium ChromeDriverで
画像アドレスの画像を右クリックメニューから「名前をつけて画像を保存」したいです。
実際には、ログインが必要なサイトを想定しています。

【環境】
端末:macbook Air
アプリケーション:eclipse
OS:mac OS

https://stackoverrun.com/ja/q/5548579
を参考にしたのですがダウンロードできず。。。

実行後は、添付画像の様な画面まで表示確認でき、
send_keys(Keys.ARROW_DOWN)が実行されたか不明です。

イメージ説明

右クリックメニューの「名前をつけて画像を保存」をするためにはどこを修正すればいいのでしょうか?

ソースコード

Python

1from selenium import webdriver 2import time 3from selenium.webdriver.common.action_chains import ActionChains 4from selenium.webdriver.common.keys import Keys 5 6browser = webdriver.Chrome(executable_path='/usr/local/Caskroom/chromedriver/78.0.3904.70/chromedriver') 7loginUrl = 'https://hoshi3.jp/img/btn_01.png' 8browser.get(loginUrl) 9 10img = browser.find_element_by_xpath("/html/body/img") 11 12actions = ActionChains(browser) 13actions.context_click(img).perform() 14actions.send_keys(Keys.ARROW_DOWN).send_keys(Keys.ARROW_DOWN).perform() 15actions.send_keys(Keys.ENTER).perform() 16time.sleep(5) 17 18browser.quit()

追記

1.質問補足

画像のURLを得て、Selenium の外でダウンロードというのは、ガードされているのでしょうか?

取得したい画像が無数にあるのでSelenium内でfor文で処理しようと思っています。


2.回答補足

ActionChainsを使わなくても、
urlretrieveを使えばDLできます。

Python

1loginUrl = 'https://hoshi3.jp/img/btn_01.png' 2urllib.request.urlretrieve(loginUrl, 'logo.png')

上記コードで画像の取得はできましたが、
実際に取得したい画像が、ログインが必要なサイトの画像のため実行すると、
urllib.error.HTTPError: HTTP Error 500: Internal Server Error
が出力されます。

Cookieを付与すれば解決すると思いますが、今回はwebdriverの仕様理解の勉強も含めているため、
webdriver上で画像ダウンロードできる方法を模索しています。


3.質問補足

後から質問補足見ました。やっぱりログインでガードされているんですね。駄目か。
そうすると、そもそもダウンロードしていいものかどうかも気になりますが、大丈夫ですか?

今回のスクレイピングは、
私用目的でターゲットサイトの利用規約にも遵守しています。

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

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

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

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

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

m.ts10806

2019/11/23 10:20

Pythonのほうは詳しくないですが、そもそもWeb操作から離れてブラウザ依存部分になるのでそこまで制御は難しいのはないでしょうか。
退会済みユーザー

退会済みユーザー

2019/11/23 10:29

んー 調べた感じ出来そうなんですねどね>< ちなみに 右クリック ↓ 下矢印キー2回押下 ↓ エンターキー押下 をブラウザに送信するイメージです。 もう少し様子を見てみます、ありがとうございました!
otn

2019/11/23 10:47

画像のURLを得て、Selenium の外でダウンロードというのは、ガードされているのでしょうか?
退会済みユーザー

退会済みユーザー

2019/11/24 03:47

ご質問ありがとうございます! ガードはされていませんが、 取得したい画像が無数にあるのでSelenium内でfor文で処理しようと思っています。
otn

2019/11/24 04:21

数が多くても関係ないと思いますが?? forでURLを取得した後、file_get_contents() では?
otn

2019/11/24 04:24 編集

後から質問補足見ました。やっぱりログインでガードされているんですね。駄目か。 そうすると、そもそもダウンロードしていいものかどうかも気になりますが、大丈夫ですか?
退会済みユーザー

退会済みユーザー

2019/11/24 04:43

質問の意図を勘違いしていました、失礼しました! あくまで私用目的でターゲットサイトの利用規約にも遵守していますので、その辺りは問題ありません。
guest

回答2

0

ActionChainsを使わなくても、
urlretrieveを使えばDLできます。
ご参考

投稿2019/11/23 14:12

shirai

総合スコア1290

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

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

退会済みユーザー

退会済みユーザー

2019/11/24 03:51

ご回答ありがとうございます! 追記  2.回答補足 にてコメントしましたが、実際に取得したい画像URLでは使用できませんでした。
guest

0

ベストアンサー

https://blog.wotakky.net/2018/08/12/post-4829/
を参考に画像を取得することに成功しました!

ありがとうございました^^

投稿2019/11/25 07:05

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問