MAGAZINE
ルーターマガジン
クローリング/スクレイピング
xdotool を使ったGUI操作で快適スクレイピング
2019.03.13
GUIアプリは使っても、監視はCLIでやりたい
弊社では、クラウドサーバー上で自動化ツールを運用しています。クラウドサーバ上のLinuxもGUIがあるので、Chromeなどはヘッドレスではなく、GUIを持ったまま動かすことも可能です。
しかしながら、大量のサーバーをGUIで管理するのは大変なので、GUIアプリもCUIで操作をしたくなります。そこで便利なのが、xdotoolというコマンドです。
前準備(インストール)
Ubuntuを例にします。
$ apt install xdotool
あらかじめ、X のディスプレイ番号は環境変数に設定しておく必要があります(私は10番をよく使います)
$ export DISPLAY=:10
ここから実例です
chromeという単語が含まれているWindowの番号をリストアップ(プロセスIDではない)
$ xdotool search --name chrome 48234497 52428801 46137345 50331649
chromeという単語が含まれているWindowの番号をリストアップして、そのウインドウのタイトルを表示
$ xdotool search --name chrome | xargs -L1 xdotool getwindowname Yahoo! JAPAN - Google Chrome Yahoo! JAPAN - Google Chrome google-chrome google-chrome
google-chromeという単語が含まれているWindowの番号をリストアップしてそのウィンドウのすべてを閉じる
xdotool search --name google-chrome | xargs -L1 xdotool windowclose
chromeのタイトルを1秒おきに監視して、変化があったらハイライト
$ watch -d -n1 "xdotool search --name chrome | xargs -L1 xdotool getwindowname"
何かの拍子でひらいてしまった別ウィンドウなどのゴミが溜まってないかどうかを、CUIから確認して閉じることがコマンドからできるというのは、自動化の観点でも便利です。
CONTACT
お問い合わせ・ご依頼はこちらから