見出し画像

初めて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

  1. バイナリのダウンロード

    1. https://chromedriver.chromium.org/downloads

  2. pipでインストール(※Pythonでのみ使用する場合)

    1. https://pypi.org/project/chromedriver-binary/

どちらかの方法で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演算子を使って文章のように比較することができる点がとても良かったです。


スキ頂けると嬉しいです〜