差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン | |||
| selenium-webdriver [2025/01/13 02:24] – skk | selenium-webdriver [2025/02/22 16:07] (現在) – skk | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | = [[selenium-webdriver]] LM: [2025-01-13 02:24:51] | + | = [[selenium-webdriver]] LM: [2025-02-22 16:05:39] |
| ~~NOCACHE~~ | ~~NOCACHE~~ | ||
| 行 107: | 行 107: | ||
| * https:// | * https:// | ||
| * https:// | * https:// | ||
| + | * [2025-02-22] https:// | ||
| === - undetected chromedriver [2023-09-07] === | === - undetected chromedriver [2023-09-07] === | ||
| 行 120: | 行 121: | ||
| FreeBSD で動作させる為には,[[https:// | FreeBSD で動作させる為には,[[https:// | ||
| + | |||
| + | === - seleniumbase [2025-02-22] === | ||
| + | undetected_chromedriver は,2025/ | ||
| + | |||
| + | ZenRow というクラウドサービスを使っても anti-bot の回避はできるようだが月額がまーまー高い.広告記事だと思うけど,この ZenRow の特集記事が良くできているので参考に読むと良い. | ||
| + | |||
| + | 今は,SeleniumBase というツールまたは,nodriver というツールが最近ではアクティブな模様.nodriver は undetected_chromedriver の作者が作っている後継だけど,selenium の書きにくいところと決別したいらしく,結構独自の書き方にしないといけなくて,既存のコードがある場合には導入しにくい.SeleniumBase は undetected_chromedriver を fork して独自進化させてるっぽいので,undetected_chromedriver からの乗り換えにはとても便利. | ||
| + | |||
| + | また,multiprocessing 環境への対応を頑張った形跡が見られるのも嬉しい.undetected_chromedriver は,複数のプロセスを動かそうとすると,Text Busy と言われることがちょいちょいあった.これは,ChromeDriver を利用するたびに chromedriver をダウンロードしてきてパッチを当ててたので,複数プロセスで動かそうとすると,時々競合のような状態になっていたと想像している. | ||
| + | SeleniumBase は,初回起動時に uc_driver という,パッチを当てまくった chromedriver を作成して,以降は必要がなければずっとそれを使い続けるので,複数のプロセスから ChromeDriver(=uc_driver) を利用しても問題が起きない. | ||
| + | |||
| + | さらに,undetected_chromedriver を FreeBSD で無理矢理動かしていた時は,zombie プロセスが大量に作成されてしまったので,定期的にプログラムを再起動してゾンビを殺していたが,終了処理などがきれいになっているのか,SeleniumBase だと zombie が発生しなかった. | ||
| + | |||
| + | ということで,今から利用する場合は,SeleniumBase の方が全然良い.(nodriver ももしかしたら良いのかもしれないけど,試してはいない) | ||
| === - UA について === | === - UA について === | ||
| 行 154: | 行 169: | ||
| ====== - freebsd における tips ====== | ====== - freebsd における tips ====== | ||
| + | ===== - SeleniumBase の動作設定 [2025-02-22] ===== | ||
| + | SeleniumBase もソースコードないでは Linux への分岐しか対応してない.ただ,undetected_chromedriver は Linux バイナリをダウンロードしてきていたので,Linux Emulation しなければならなかったが,SeleniumBase は chromedriver に対してなんらかの方法でパッチを当てているので,FreeBSD でインストールできる Chromium に附属している chromedriver をベースにして動作する.つまり,linux emulation しなくても大丈夫. | ||
| + | |||
| + | ==== - python ライブラリの準備 ==== | ||
| + | <code bash> | ||
| + | # pip install seleniumbase | ||
| + | </ | ||
| + | |||
| + | ==== - python ライブラリの FreeBSD 対応 ==== | ||
| + | / | ||
| + | |||
| + | < | ||
| + | __init__.py | ||
| + | __pycache__ | ||
| + | </ | ||
| + | |||
| + | patecher.py で以下. | ||
| + | |||
| + | <code python> | ||
| + | 15c16 | ||
| + | < IS_POSIX = sys.platform.startswith((" | ||
| + | --- | ||
| + | > IS_POSIX = sys.platform.startswith((" | ||
| + | 30c31 | ||
| + | < if sys_plat.endswith(" | ||
| + | --- | ||
| + | > if sys_plat.endswith(" | ||
| + | </ | ||
| + | |||
| + | / | ||
| + | |||
| + | <code python> | ||
| + | 47 def is_linux(): | ||
| + | 48 | ||
| + | </ | ||
| + | |||
| + | これで少なくとも,僕の環境では SeleniumBase が FreeBSD で動作している. | ||
| + | |||
| ===== - undetected-chromedriver の動作設定 [2023-09-07] ===== | ===== - undetected-chromedriver の動作設定 [2023-09-07] ===== | ||
| undetected-chromedriver がダウンロードできるバイナリは上述の通りで,FreeBSD で動作させる為には,以下のどちらかの対応かと考えた. | undetected-chromedriver がダウンロードできるバイナリは上述の通りで,FreeBSD で動作させる為には,以下のどちらかの対応かと考えた. | ||
| 行 166: | 行 219: | ||
| ==== - python ライブラリの準備 ==== | ==== - python ライブラリの準備 ==== | ||
| - | < | + | < |
| # pip install undetected-chromedriver | # pip install undetected-chromedriver | ||
| </ | </ | ||