0
1

Selenium(Selenium-wire)をDockerで動かす(アプデ対応、要考慮項目)2024年6月最新版()

Last updated at Posted at 2024-06-11

本稿執筆の経緯と目的

自宅で動かしているクローリングシステムのリプレイスを行おうと考えました。

現環境

  • 自宅Linux端末(hpのビジネス向け小型マシン、i5-4870Uみたいなモデル)
  • 単一ディレクトリにPythonスクリプトやSQliteのDBをひとまとめにしてvenvかpyenvで仮想環境を都度立ち上げ・・・というのをシェルスクリプトにまとめてcronjobで起動時に実行するように設定(ダブって起動しないような監視含む)

現環境の問題点

  • コードのCI/CDなんてあったものではない(もともと変更やアプデを前提にしていないが)
  • なぜか最近、起動していると重くなる現象が発生→1時間に1回本体ごと再起動する強制措置で延命→情報の取りこぼしなどが発生

新環境

  • 自宅Linux端末(nipogiとかいうよくある小型PC、中華ではまだ見る方、N100なのでTDPとスペック比は最高)←この端末がどうこう、という記事ではないです。今はTDP低くスペック(passmarkで6000↑)もLinux端末なら過剰くらいのものが安く買えていいぞ、という話です。(下手にケチって超型遅れでTDP爆熱みたいな端末にするくらいなら、ということ)
  • Dockerは少なくとも導入(k8sは意味が薄いので見送り)

新環境で発生した問題

  • コアとなるSelenium(Selenium-wire含む)を用いたPythonコンテナが動かない

基本的にChatGPTに聞きながら進めましたが、Selenium関連のビルドかupで毎回コケます。半ばあきらめかけましたが、ChatGPT完全依存も良くないので、検索性が著しく低下したGoogleで調べることに。
すると、逆にChatGPTの最新情報(2023年まで)では得られない情報が得られたり、結局Qiitaこちらの記事がヒット。
まずその記事のとおりに進めましたが、うまくいきません。
結果的には、追加で調べながら解決できたので、それを2024年6月最新版()として備忘録的に残しておきます。

追加で設定や注意が必要な項目

基本的には記事のとおりでOKです。

Appleシリコンの場合

M1などAppleシリコン端末の場合、Dockerfileの最上部をこのようにします。

FROM --platform=linux/amd64 python:3.9

本番環境(動作環境)のIntelCPU端末(私の新環境だとN100)でエラーになる場合、Dockerfileなどをどう切り替えるか、というのは逆にChatGPTの得意技なので聞いてみてください。(←書いてる時点でまだ本番環境では動かしてないので・・・)
参考にしたページ

requirements.txtの修正

blinkerがもう対応していないので、記述を追加し、このように古いバージョンを使うようにします。

selenium-wire
chromedriver-binary-auto
blinker<1.8.0 

参考にしたページ

注意点

python:3.9-slim は使えないか、使えるかわからない追加設定が必要になります。ここがハマったポイントでした。ChatGPTは当初からpython:3.9-slimを使うように進言してきましたが、Seleniumコンテナにおいてはpython:3かpython:3.9、slimではないバージョンを使う必要があります。Appleシリコンの場合と合わせて注意が必要です。

まとめ

注意事項を修正すれば、ほぼ参考記事のとおり問題なく阿部寛のHPが開ける(ログに出る)と思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1