ユーザ用ツール

サイト用ツール


selenium

Selenium

  • ブラウザー自動化を可能にし、それを支えるツール群とライブラリー群プロジェクト
  • 下記言語で使用可能
    • Java
    • Python
    • C#
    • Ruby
    • JavaScript
    • Kotlin

主なオプションまとめ

Python About
ヘッドレス –headless ブラウザを立ち上げず実行する
ミュート –mute-audio ミュートにする
サンドボックス –no-sandbox サンドボックスを使用しない
/dev/shm –disable-dev-shm-usage /dev/shmを使用しない
–disable-gpu とりあえず付けとけとか
–disable-web-security
–user-data-dir
–allow-running-insecure-content
  • 参考の「List of Chromium Command Line Switches」にて多く紹介されている

サンドボックス

  • サンドボックスとは、外部から受け取ったプログラムを保護された領域で動作させることによって、システムが不正に操作されるのを防ぐセキュリティ機構のこと
  • Chrome(Chromium)ではセキュリティ上の理由で、レンダリングやスクリプトエンジンはSandboxというchrootで隔離された環境で動かされる
  • そのため、Chromeの自動操作にはサンドボックスを無効化しなければならない
    • ローカルでは不要だったりする

/dev/shm

  • /dev/shmを使わないようにしないと、メモリが少ない環境だと食いつぶされて死ぬ可能性がある

Exclude the collection

  • まだよくわからないので、ひとまずPythonで
option.add_experimental_option('excludeSwitches', ['enable-logging', 'enable-automation'])
オプション 概要
enable-logging コマンドラインにログが出ない
enable-automation 自動なんちゃらによって保護されています的なやつ無効

ウィンドウ最大化

driver.maximize_window()

スクリーンショット

driver.save_screenshot('test.png')

フルページ

w = driver.execute_script('return document.body.scrollWidth')
h = driver.execute_script('return document.body.scrollHeight')
driver.set_window_size(w, h)

Tips

Googleにログイン

  • Googleはスクレイピングを禁止しており、自動実行できないそう
  • 外部サービスにてログインすることで回避できる
    • StackOverflowなどが使える
    • 機械の認証がある可能性もあるが、待ちを入れると解消できる?
  • オプションで解決できた事例もある

DevToolsActivePort file doesn't exist

  • headlessを付けたら治ります
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

参照

selenium.txt · 最終更新: 2021/06/15 22:55 by 127.0.0.1