初めてPythonを使うTips
普段はJavaScript(TypeScript)でフロントエンド開発を担当しています。趣味でスクレイピングをしたい機会があり、せっかくなのでPythonに挑戦してみることにしました。
JavaScriptエンジニアが初めてPythonを使う時に調べたTips的なことをまとめます。
Pythonのバージョン管理
Node.jsでいうnodenvみたいなPython自体のバージョン管理で何を使うのか調べたらasdfが良さそうだった。
asdfはPythonだけでなくNode.jsなど他言語もサポートしている。
asdf local python 3.10.9
使い方はnodenvやvoltaなどの管理ツールと同様でasdf localすることで.tool-versionsファイルが生成され、Pythonのバージョンを固定することが出来る。
パッケージのバージョン管理
venvを使う。特に追加でインストールは不要でそのまま使える。
venv 環境の作成
python3 -m venv venv
venvというディレクトリが生成される
venv 環境の有効化
source venv/bin/activate
有効にするとプロンプトの前に環境名(venv)が表示される
新しく plugin を install する
pip install selenium==4.6.0
requirementsに書き込む(Node環境でいうpackage.jsonみたいなものだと思ってますがどうなんでしょう)
pip freeze > requirements.txt
requirements.txtに書き込んだことでgitでバージョン管理することが出来る。改めてinstallしたいときは下記で使われているパッケージ一覧をインストールできる。
pip install -r requirements.txt
venv 環境の無効化
deactivate
型チェック
mypyを使う。vscodeを使って開発したが、下記プラグインを使うことでエディタ上も問題なく型補完された。
envの使用
// .env
URL=https://hoge-fuga.co.jp
getenvの第二引数はdefaukt値。指定しなければNoneが返ってくる。
import os
URL = os.getenv('URL', '')
スクレイピングの準備
Python + Selenium + Chromeでスクレイピングしていきます。
ChromeDriver
バイナリのダウンロード
pipでインストール(※Pythonでのみ使用する場合)
どちらかの方法でChromeDriverをインストールします。
次に、seleniumとbeautifulsoup4をインストールします。
pip install selenium beautifulsoup4
こちらの記事がとても分かりやすかったです。
感想
環境さえ整えばサクサクとコードを書き進めることが出来、半日ほどでやりたかったスクレイピングが実現できました。ただ、PythonのNoneの扱いについて迷いました。TypeScriptでいうhoge?.fuga ?? 'aaa' のようにoptional chainを使って書くことが難しい点です。
プログラム的にNoneの可能性があっても開発者にとってはNoneの場合はない時は、#type: ignore することも出来るのですが、そうするとNone以外のtypeチェックがされないため、エラーの温床に繋がります。。
調べたところ、下記の記事のような解決策があるようです。
また、Null 合体演算子を or で書けたり、and, or, not演算子を使って文章のように比較することができる点がとても良かったです。
スキ頂けると嬉しいです〜