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

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

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

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

selenium

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

Q&A

解決済

2回答

5537閲覧

PythonでseleniumをTor Browserで実行する

takahiro00

総合スコア84

Python

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

selenium

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

0グッド

2クリップ

投稿2020/04/18 11:24

前提・実現したいこと

PythonでseleniumをTor Browserで実行したいのですが、
エラーになってしまいうまくいきません。
geckodriverをダウンロードして、ソース内でPATHも通しているのですが、
なぜかgeckodriverがありません みたいなエラーが出てしまいます。

以下のサイトを参考にしています。
Tor Browserについてはこちらを参考
PATHの通し方はこちらを参考

ご教授いただければと思います。

発生している問題・エラーメッセージ

Traceback (most recent call last): File "/Users/xxx/.conda/envs/EsiteAuto/lib/python3.7/site-packages/selenium/webdriver/common/service.py", line 76, in start stdin=PIPE) File "/Users/xxx/.conda/envs/EsiteAuto/lib/python3.7/subprocess.py", line 800, in __init__ restore_signals, start_new_session) File "/Users/xxx/.conda/envs/EsiteAuto/lib/python3.7/subprocess.py", line 1551, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver': 'geckodriver' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/xxx/PycharmProjects/EsiteAuto/test.py", line 8, in <module> browser = webdriver.Firefox(firefox_profile=firefox_profile) File "/Users/xxx/.conda/envs/EsiteAuto/lib/python3.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__ self.service.start() File "/Users/xxx/.conda/envs/EsiteAuto/lib/python3.7/site-packages/selenium/webdriver/common/service.py", line 83, in start os.path.basename(self.path), self.start_error_message) selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

該当のソースコード

from selenium import webdriver firefox_profile = webdriver.FirefoxProfile() firefox_profile.set_preference('network.proxy.type', 1) firefox_profile.set_preference('network.proxy.socks', '127.0.0.1') firefox_profile.set_preference('network.proxy.socks_port', 9150) browser = webdriver.Firefox(executable_path=r'/Users/xxx/geckodriver') browser = webdriver.Firefox(firefox_profile=firefox_profile) # チェック browser.get("https://xxx")

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

Python3.6

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

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

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

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

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

guest

回答2

0

Python

1from selenium import webdriver 2from selenium.webdriver.firefox.firefox_profile import FirefoxProfile 3import os 4 5torexe = os.popen(r'C:\Users\Owner\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe') 6profile = FirefoxProfile(r'C:\Users\Owner\Desktop\Tor Browser\Browser\TorBrowser\Data\Browser\profile.default') 7profile.set_preference('network.proxy.type', 1) 8profile.set_preference('network.proxy.socks', '127.0.0.1') 9profile.set_preference('network.proxy.socks_port', 9050) 10profile.set_preference("network.proxy.socks_remote_dns", False) 11profile.update_preferences() 12driver = webdriver.Firefox(firefox_profile= profile, executable_path=r'/Users/xxx/geckodriver') 13driver.get("http://check.torproject.org") 14driver.get("https://google.co.jp/")

Python

1from selenium import webdriver 2import os 3 4# To use Tor's SOCKS proxy server with chrome, include the socks protocol in the scheme with the --proxy-server option 5# PROXY = "socks5://127.0.0.1:9150" # IP:PORT or HOST:PORT 6 7torexe = os.popen(r'C:\Users\Owner\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe') 8PROXY = "socks5://localhost:9050" # IP:PORT or HOST:PORT 9options = webdriver.ChromeOptions() 10#options.add_argument('--headless') 11options.add_argument("start-maximized") 12options.add_argument("disable-infobars") 13options.add_argument("--disable-extensions") 14options.add_argument('--proxy-server=%s' % PROXY) 15driver = webdriver.Chrome(chrome_options=options, executable_path=r'/Users/xxx/chromedriver.exe') 16driver.get("http://check.torproject.org") 17driver.get("https://google.co.jp/") 18print (driver.title)

投稿2020/04/22 12:46

編集2020/04/22 20:11
Reach

総合スコア733

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

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

0

ベストアンサー

何故か webdriver.Firefox のインスタンスを二回作成しているので、 geckodriver のパスを指定していない二回目の実行で失敗しているだけではないでしょうか。

executable_pathfirefox_profile を同時に与えてインスタンスを作成 してみてください。

python

1browser = webdriver.Firefox( 2 executable_path=r'/Users/xxx/geckodriver', 3 firefox_profile=firefox_profile 4)

投稿2020/04/18 13:02

argparse

総合スコア1017

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

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

takahiro00

2020/05/01 14:22

うまくできました! ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問