質問: ※はじめに※ **更新、大変、遅くなりました。一部、自己解決できたので、内容を変更してあります。自己解決しなかったところだけ、改めて質問させて頂きます。** Pythonにて、seleniumの勉強中です。 実現したいこと: -------- " selenium " パッケージを使って、chromeブラウザを自動操作して、希望するサイト検索が出来る様にしたいです。 --- 今回、私の希望を実現させてくれそうな、うってつけのサイトがありましたので、これを参考に作業を進めました。 ゼロからはじめるPython(49) Pythonでブラウザ自動操縦してカード明細を自動でダウンロードしよう(その1) --- 上記サイト通り作業を行って、途中、疑問に思うこと、分からない所があり、それらに躓き、現在、私の希望が実現されてない状態です。 なので具体的に、以下の4つを質問させて頂き、最終的に、私の希望を実現したいです。 **(最終目的のChromeブラウザ自動操作については、自己解決の途上において、実現する事ができました。ありがとうございました。最終目的は実現しましたが、未だ疑問に残る部分がありますので、更新して、引き続き、質問をさぜて頂きたいと思います)** **(※以下の、【1】、【3】は自己解決、及び回答者様に、ご教授頂いたので解決済みとさせて頂きます。従いまして、引き続き質問させて頂きたいのは、自己解決できなかった【2】【4】についてのみです)** 【1】既にインストール済みのパッケージを再度インストールする必要性。**← 自己解決済み!** **【2】" pip show " コマンドが、" selenium " では使えて、" chromedriver-binary " では使えないのはなぜ?** 【3】Pythonコード作成と保存はどの様にすれば良いのですか? **← 自己解決済み!** **【4】実行時のコマンドラインはPathを通せばAnacondaプロンプトでもコマンドプロンプトでも大丈夫ですか?** 作業を行う上での、私の環境は以下の通りです。 1. PC:Windows10_HOME_64bit 2. Anaconda3の最新版をインストール (インストール先は:パソコンのC:\Users\ユーザー名\Anaconda3\です) 3. Pythonは、Anacondaの中にあるPythonを使います。その他、パソコン本体にPythonを別途インストールしていません) --- ###### ここから質問詳細についての内容です。 ### 【1】既にインストール済みのパッケージを再度インストールする必要性。【 自己解決済み!】 上記参考サイトでは、" selenium " と、" chromedriver-binary " を、インストールしていますが、参考サイトの添付画像をよく見ると、" Anaconda3 " を使用しており、Anacondaプロンプトを使用しております。私がインストールした "Anaconda3 " の中身を確認したところ、既に両方のパッケージともインストールがされておりました。 試しに、再度、両パッケージを再インストールしてみました。 そして、その後、" conda list " にてバージョンを確認してみましたが、再インストール前と後では、内容が全く同じでした。これは最新版が配布されているのかもしれないからを狙ったインストールだったのかな?と思ったのですが、この見立ては正しいですか?もし、違って居るのならば、両パッケージを、再インストールする必要性はなんでしょうか? **【 自己解決した内容 】** **" Selenium " と、" chromedriver-binary " は、" Anaconda3 " の、標準パッケージには、元々、含まれておりません! 従って、Chromeブラウザ自動操作を実現するには、最初に、両方のパッケージを、参考サイトの様にインストールする必要があります。** 恥ずかしながら、思いっきり私の勘違いでした、" Selenium " と、" chromedriver-binary " と、両パッケージとも、標準パッケージではありませんでした。 大変失礼致しました。私が勝手に、最初からインストールされていると、勘違いしただけでした。 初心者なので、手探りで作業をしている内、どこかのタイミングで、両パッケージを無意識にインストールしたものと思われます。 それが分かったキッカケは、" Selenium " と、" chromedriver-binary " は、標準パッケージとして、" Anaconda3 " に、ほんとうに、最初からインストールされているのだろうか?と言う単純な疑問でした。 そこで、試しに、" Anaconda3 " を、一旦、アンインストール。そして、再度、インストールし直しました。 再インストール後、" conda list(インストール済みパッケージ確認コマンド) " にて、改めて確認すると、両方とも、インストールされていなかったと言う事が分かりました。 ### 【2】 " pip show " コマンドが、" selenium " では使えて、" chromedriver-binary " では使えないのはなぜ? **【 質問受付中 】** **(この項が、まだ未解決なので、引き続き、質問させて頂きます、自己解決に向けた努力をしましたが、まだ、未解決です)** 参考サイトにならって、" chromedriver-binary " インストール先までのPathを、環境変数に追加したいので、" pip show chromedriver-binary " とやってみたところ、なぜか " chromedriver-binary " について内容表示されず、コマンド入力したあと、ちょっと間をおいて、コマンドラインの入力待ち状態に戻ってしまいました。これは、どうしてでしょうか? ``` 【 Command 】 (base) C:\Users\ユーザー名>pip show chromedriver-binary 【 Output 】 (base) C:\Users\ユーザー名> ← 何も表示されない! ``` (ちなみに私の環境下においては、なぜか、"selenium " の方は、内容が表示されます) ただ、" chromedriver-binary " の内容が表示されないことについて、私自身、一つ、心あたりがあります。 参考サイトでは、両パッケージを、" pip install " コマンドで行っておりますが、以下に示した、別のサイトでは、" Anaconda "でのパッケージ管理は、" pip install " ではなく、" conda install " を使用すべきとありました。 condaとpip:混ぜるな危険 その為、両パッケージの再インストールを、今回、" conda install " にて行いました。 もしかして、これが、" chromedriver-binary " だけ内容表示されない原因だったりするのでしょうか? インストール先が分からないと、Path設定ができません。とりあえず、Anaconda内を検索してみたらフルパスが分かるかなと、確認して見ましたが、私の環境下では、" chromedriver.exe " は、2つ存在しており(ちなみに以下の2つです) C:\Users\ユーザー名\Anaconda3\pkgs\chromedriver-binary-2.38-0\Library\bin C:\Users\ユーザー名\Anaconda3\Library\bin しかも、参考サイトで表示されたPathとは相違しています(バージョンアップで、システム構成が変わったのでしょうか?) とにかく適切なPathを設定したいので、それがわかる内容を、ご教示頂きたいです。 **【 自己解決に向けて努力した内容 】** 色々と調べてみると、" conda install " したときと、" pip install " したときでは、**インストール先が異なることがわかりました。** 以下は、それぞれインストールしたときの保存先です。 1. " conda install " したときインストールされる保存先のPath(保存先への道のり) **C:\Users\ユーザー名\Anaconda3\pkgs\** (←標準パッケージが保存されている場所と同じです) 2. " pip install " したときインストールされる保存先のPath(保存先への道のり) **C:\Users\ユーザー名\Anaconda3\Lib\site-packages\** 上記を見ると、" C:\Users\ユーザー名\Anaconda3\ " までは、どちらもPathが一緒ですが、その先からそれぞれ別れるのが見て取れます。 1、2項、それぞれの違いとして、 1項が、**" condaパッケージ管理システムのインストール先**、 2項が、**pipパッケージ管理システムのインストール先 "** と言う事も分かりました。 これを踏まえた上で、Anacondaプロンプトで、" conda install selenium " インストール、その後、" Selenium " パッケージフォルダの保存先(Path)を調べてみました。 (各パッケージは、色々なファイルが入った、一つのフォルダとして構成されています。ですから、インストールされているかどうかは、フォルダを調べる事になります) 調べた結果、 **" selenium " に関しては、1項、2項の、両方の保存先(Path)にインストールされているのが確認できました。** (フォルダ検索については、私のパソコンは、Windows10なので、" Windows10 ファイル、フォルダ検索方法 " で、その方法がヒットしたので、それで検索をしました) それに対し、 **" chromedriver-binary " は、" conda install chromedriver-binary " とすると、1項の方にはインストールされるのですが、2項の方には、インストールされない** と言う事が分かりました。 " conda install chromedriver-binary " インストールしても、**" pipパッケージ管理システム " が管理する保存先、" C:\Users\ユーザー名\Anaconda3\Lib\site-packages\ " にはインストールされないのですから、**幾ら、" pip show chromedriver-binary " とやっても、**無いものに対して中身を表示しろと命令してる訳で、**表示されないのは、当たり前だと思いました。 ちなみに、" conda install chromedriver-binary " でなく、参考サイトと同じように、" pip install chromedriver-binary " とやると、" pipパッケージ管理システム " の保存先である " C:\Users\ユーザー名\Anaconda3\Lib\site-packages\ " にもインストールされ、そして、" pip show chromedriver-binary " とやると、内容がしっかり表示されました。 これが、 ``` 【 Command 】 (base) C:\Users\ユーザー名>pip show chromedriver-binary 【 Output 】 (base) C:\Users\ユーザー名> ← 何も表示されない! ``` の原因だと言う事にたどり着きました。 で、なぜ、" chromedriver-binary " は、上記1項のpathのみにインストールされ、2項の方にはインストールされないのだろうか?この違いは何か?と考えたときに、 " Selenium " は、中身がPythonファイル群に対して、" chromedriver-binary " のほうは、実行ファイルが含まれ、更に、システムbinaryフォルダ(C:\Users\ユーザー名\Anaconda3\Library\bin)のほうにもインストールされるので、Pythonファイル以外の要素も含まれるとの、" condaパッケージ管理システム " の判断から、" C:\Users\guams\Anaconda3\Lib\site-packages\ " の方には、システム的に、インストールがなされない様になっているのではないかと、私はそう思いました。 **総括して、私自身の疑問に関する、私が見立てた回答をまとめますと、** 1. 番号リスト" conda install chromedriver " でインストールしても、" pipパッケージ管理システム " のパッケージ保存先にはインストールされないので、" pip show chromedriver-binary " とやっても、内容表示できるものがありませんよと言う事になり、コマンド命令しても、何も表示されない結果となる。 (コマンド入力しても、何も表示されないと言うのは、非常にわかりにくく、condaシステムとして、そんなものはない!と、文句がでるようにしてくれても良いのではないかと思いました) 2. " Selenium " と、" chromedriver-binary " の、適切なpathは以下の通りです。 これを、パソコン、Windows10の環境変数にて追加しました。 (両方とも、condaパッケージ管理システムのインストール先です) " selenium " ⇒ C:\Users\ユーザー名\Anaconda3\pkgs\ " chromedriver-binary " ⇒ C:\Users\ユーザー名\Anaconda3\pkgs\** 但し、条件として、 ・" Anaconda3 " を、" C:\Users\ユーザー名\ " に、インストールする事。 ・" 両方とも、" conda install " コマンドでインストールする事。 付きです。 以上、ここまで、非常に長くなってしまいましたが、**私の、この総括の見たては、果たして、正しいでしょうか?** これを、ご教示頂きたく、引き続き、回答をお待ち申し上げております。 どうぞ、よろしくお願い致します。 ### 【3】Pythonコード作成と保存はどの様にすれば良いのですか?【 自己解決済み!】 思いっきり初心者が尋ねるような質問でお恥ずかしいですが、Pythonコードはjupyter notebookでコードを書いて、その結果をみて勉強しているため、単純に書いて保存しての基本動作がわかりません。 参考サイトのPythonコードをコピペして、それを使いたいのですが、まずコードを書く(コピペする)のは、メモ帳でも大丈夫ですか?それともTeraPadで書いた方が良いですか? それから保存する場所は、Anaconda3の、どのPythonディレクトリ内に保存すればいいのでしょうか? **【 自己解決した内容 】** Pythonコードの作成&保存は、Windows10のメモ帳でもOKです。 保存するときの拡張子は、(.py)で保存します。 例えば、" test " という名前でpythonプログラムを保存するなら、" test.py " になります。 但し、保存する時、**文字コード、" UTF-8 " で保存できる事**が条件のようです。 (詳細は、以下のサイトが参考になりました) ファイルに記述したプログラムを実行する あと、私は、" TeraPad " なども愛用していて、これも、問題ありません。" UTF-8 " にて文字コードを設定すれば、問題無く作成、保存、そして、Pythonファイルとして動作の実行が確認できます。 文字コードさえクリアできれば、テキストエディタならなんでもいいのではないかと思いました。 (ただ、検証はしておりません・・・すいません) 今回、私は、Chromeブラウザ自動操作のプログラムを、Windows10のメモ帳で作成し、保存し、そして、プログラムを実行する事ができました。 あと、その保存先についてですが、結果から言うと、どこに保存してもOKでした。 但し、Anacondaプロンプトで、コマンド入力するときに、**作成したpythonファイルの保存先までのディレクトリに移動してから実行**してあげる必要があります。 以下は、デスクトップにtest.pyと言うファイルを保存して、それを実行した時のコードです。ちなみに、冒頭でご紹介しているChromeブラウザ自動操作の参考サイトも、このやり方でpythonファイルを実行しています。 ``` (base) C:\Users\ユーザー名\Desktop>python test.py ``` 他にも、pythonファイルの実行方法はありますが、今回は、私は、この方法で実行することにしました。 ### 【4】実行時のコマンドラインはPathを通せばAnacondaプロンプトでもコマンドプロンプトでも大丈夫ですか? **【 質問受付中 】** **(この項が、まだ未解決なので、引き続き、質問させて頂きます、自己解決に向けた努力をしましたが、まだ、未解決です)** いざ、自動操作を実行するとき、Pythonファイルについては、Pathを通せば、コマンドプロンプトでもAnacondaプロンプトでも、どちらでも入力OKで大丈夫ではないかと思いますが、これは正しいですか? 間違っていたら、正しい内容を、ご教示ください。 **【 自己解決に向けて努力した内容 】** 自動操作のpythonファイル実行は、コマンドプロンプトでやろうとAnacondaプロンプトでやろうと、どちらでも可能だと思いました。 実際に、Anacondaプロンプトと、コマンドプロンプトで、自作のChromeブラウザ自動操作のpythonプログラムを実行させたところ、両方とも、正しく動作してくれました。 但し、コマンドプロンプトにおいて、python本体のプログラムを実行すると、以下の様なアナウンス文が表示されます。 ``` 【 Command 】 (base) C:\Users\ユーザー名>python 【 Output 】 Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32 Warning: This Python interpreter is in a conda environment, but the environment has not been activated. Libraries may fail to load. To activate this environment please see https://conda.io/activation Type "help", "copyright", "credits" or "license" for more information. ``` " このpythonは、conda環境のものを使用していますが、アクティブになっていないので、ライブラリ等の読み込みに支障がでる可能性があります " と言う様な内容の事がアナウンスです。 これについては、CommandPromptのほうで、以下のようにCommandを打つと、問題が解決されます。 参考サイト:Activating an environment ``` 【 Command 】 C:\Users\ユーザー名>conda activate base 【 Output 】(base) C:\Users\ユーザー名> ← 何も表示されませんが、これでアクティブになってコマンドプロンプトでも、Anacondaの中のpythonが使える様になります。 と言う事で、続けて、" Python " と打ちます。 【 Command 】 (base) C:\Users\ユーザー名>python Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>> これで、pythonが使える様になりました! ``` で、総括して私の見たては、 **コマンドプロンプトでも、Anacondaプロンプトでも、自作したChromeブラウザ自動操作のpythonプログラムは、パソコンの環境変数で、正しいPathを追加する事で、正常に動作してくれます。** ただ、コマンドプロンプトで、pythonを使う場合は、今、お話した様に、コマンドプロンプトで、Anaconda3の中の、pythonを、activateする必要があります。 と言う事です。 以上、私の述べた、私の認識は正しいでしょうか? 質問は以上です。長文になってしまいましたが、どうぞよろしくお願い致します。 ご回答は、直接のご教示、または、参考サイトの紹介でも、どちらも大歓迎です! 併せて、よろしくお願いいたします。
回答: 【2】と【4】について、自己解決しました。 まず【2】について、 『" Selenium " と、" chromedriver-binary " の、適切なpathは以下の通りです。 これを、パソコン、Windows10の環境変数にて追加しました。 (両方とも、condaパッケージ管理システムのインストール先です) " selenium " ⇒ C:\Users\ユーザー名\Anaconda3\pkgs\ " chromedriver-binary " ⇒ C:\Users\ユーザー名\Anaconda3\pkgs\』 と、本文中の記載しましたが、これに追加して、 『但し、" chromedriver-binary " の中の " chromedriver.exe " という実行ファイルは、以下のPathにも保存されており、こちらの実行ファイルが、システム上使われているみたいです。』 と言うのを、付け加えます。 " chromedriver-binary " をインストールすると、" chromedriver.exe " は、以下の2つのPathに保存されます。 1. C:\Users\ユーザー名\Anaconda3\pkgs\chromedriver-binary-2.38-0\Library\bin 2. C:\Users\ユーザー名\Anaconda3\Library\bin で、上記、1項の方のPathの、" chromedriver.exe " を削除し、ブラウザ自動操作プログラムを実行したところ、自動操作が実行されましたが、1項の方を残して、2項の、" chromedriver.exe " を削除すると、自動操作プログラムは、実行されませんでした。 と言う事は、" condaシステム " では、ブラウザ自動操作プログラムで使用する、" chromedriver.exe " は、上記2項の方のPathに保存されたものを使用するのではないかと、推測されます。 続いて、【3】について、 コマンドプロンプトで、condaシステムを使う場合、Pathを通す以外にも、以下のコマンドで、前もって、" condaシステム " をアクティベイトしておく必要があります。 ``` 【 Command 】 C:\Users\ユーザー名>conda activate 【 Output 】 (base) C:\Users\ユーザー名> ``` 上記の様に、" conda activate " と打つことで、それ以降の入力待ち状態が、Anacondaプロンプトと、同じ表示になることが確認出来ます。 入力待ち表示の先頭に、" (base) " と追加されるのが確認できます。 condaシステムをアクティベイトしないで、conda内のシステムを使おうと、例えば、Pythonを起動すると、以下の様なエラーが出ます。 ``` 【 Command 】 C:\Users\ユーザー名>Python 【 Output 】 Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32 Warning: This Python interpreter is in a conda environment, but the environment has not been activated. Libraries may fail to load. To activate this environment please see https://conda.io/activation Type "help", "copyright", "credits" or "license" for more information. ``` また、pipシステムで、以下のようにパッケージを確認しようとすると、やっぱりエラーになります。 ``` 【 Command 】 C:\Users\ユーザー名>pip show selenium 【 Output 】 'pip' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ``` (ちなみに、" conda activate " は、一回きりです。コマンドプロンプトを再起動させた場合は、もう一度、" conda activate " と、入力する必要があります) " conda activate " とコマンド入力する事で、以下の様に、condaシステムを、コマンドプロンプトで使える様になります。 1. Python起動 ``` 【 Command 】 (base) C:\Users\ユーザー名>python 【 Output 】 Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>> ``` 1. pip show selenium ``` 【 Command 】 (base) C:\Users\ユーザー名>pip show selenium 【 Output 】 Name: selenium Version: 3.141.0 Summary: Python bindings for Selenium Home-page: https://github.com/SeleniumHQ/selenium/ Author: UNKNOWN Author-email: UNKNOWN License: Apache 2.0 Location: c:\users\ユーザー名\anaconda3\lib\site-packages Requires: urllib3 Required-by: ``` 以上です。