ここ二、三日ずっとプログラムを考えていて
pyautoguiを使って、画像認識して
クリックするプログラム
あるサイトをスクレイピングするのに
今までは単純に要素を
find elementで調べてクリックすれば
よかったのだが
最近の仕様変更で
クリックする対象が
#shadow rootの中にネストされてしまい
findできなくなってしまったのだ
shadowの中から対象の要素を探す方法を
ずうっと考えていたのだが
それは諦めることにした
できないことないような気もするが
じゃあどうしたかというと
人間がその、オブジェクトを探してクリック
するという挙動をプログラムにするしかないと
そこで思いついたのが
pyautoguiで
対象の画像をスクショして
ペイントでトリミングして
それをデスクトップに保存しておく
pythonも一応3.10までバージョンアップし
pyautoguiに必要なopencvなどもインストール
じゃまなpython2.7とか3.8は環境変数までしっかりアンインストール、削除。
open cvとかのpipでのインストールが
意外と難しくてpip installだけだとうまく動いてくれなくて
py -m pip installでうまくインストールしてくれた。
py -mをつけることが
若干イレギュラーな感じがして
なんか嫌なんだよね
最初にちゃんとpath通したはずなんどけどな
んで、pyautoguiで組んでみた所
なかなか画像を認識しない
そこで
locate on screenの
confidenceを0.7くらいにしても
まだだめ
画像を認識する範囲をregionで絞ることにした
窓フォトを使って範囲を確定させる
一定の範囲に絞ってみたところ
ちゃんと認識してくれるようになった。
人間が動かすようにマウスが動いて
クリックするのは見ててなかなか
面白い、カーソルが勝手に動くところを肴に
一杯いけるわ。
もう少し拡張させるかなあ