バイオインフォマティクスの備忘録コンテンツへスキップバイオインフォマティクスの備忘録バイオインフォマティクスやPython等プログラミング関連の情報をメモしておきます。LLCからお願いいたします。Chromeを使用してWEBスクレイピングをしていきます。ami-009d6802948d06e52」を立ち上げます。Chromeをインストールします。https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpmChromeDriverをインストールします。bin/Python3とSeleniumをインストールします。_main()Googleで「Python」を検索して、検索結果のスクリーンショットを取ります。test.py以下のようにスクリーンショットが取得できました。日本語の文字化けただし、この状態で日本語を検索すると、以下のように文字化けしてしまいます。search.send_keys('パイソン')そこで、日本語フォントをインストールします。ipa-pmincho-fonts再度実行すると、文字化けすることなく、スクリーンショットを取得できました。文章中の単語出現回数をカウントするときに、defaultdictを使うとシンプルに書ける例として以下の文章内(words)で出現する単語の頻度をカウントします。話をシンプルにするため、「,」や「.」、大文字小文字は考えないことにします。普通に書くとこんな感じでしょうか。1print(word_count)こっちの方がわかりやすいでしょうか。1print(word_count)いずれにしても、word_countディクショナリに存在しないwordが出てきたら、初期化をしています。得られる結果は以下の通りです。1}初期化が面倒くさいので、以下のように書きたくなってしまいますが、これではエラーになってしまいます。'Python'一つ目のword「Python」がword_countディクショナリに無いためです。そこで、defaultdictの出番です。defaultdictを使用することで、あらかじめ初期値を設定することができます。1print(word_count)defaultdict(int)としていますが、これは初期値を0にするということです。1})無事結果が得られました。defaultdictを使用することで、for文の中身がすっきりしてわかりやすくなったかと思います。ちなみに、以下のような書き方も良い感じです。1print(word_count)ディクショナリのgetメソッドを使用して、第1引数に取得したい要素のキーを、第2引数にキーが存在しない場合のデフォルト値を指定しています。今回の場合には、collections.Counterを使用するのもいいですが、先に全部リスト化する必要があるので、長い文章になった場合にはメモリが足りなくなる恐れがあることに注意です。boto3を使用してAWSのEC2インスタンスを立ち上げるまずは、最小限のオプションだけで起動してみます。[ec2.Instance(id=‘[インスタンスID]’)]立ち上がったインスタンスタイプはm1.smallになります。デフォルトのインスタンスタイプがデフォルトでm1.smallになっているためです。次は、t2.microを指定して起動します。InstanceType="t2.micro")t2.microのインスタンスが立ち上がりました。マネジメントコンソールから「接続」を開くと以下のように表示されます。インスタンスがキーペアに関連付けられていません。このインスタンスがキーペアに関連付けられていません。キーペアがない場合、有効なユーザー名とパスワードの組み合わせを使用してこのインスタンスにログインする必要があります。次は、キーペアを指定して起動します。KeyName="[キーペア]")これで、ログインできるかと思いきや、以下のエラーが出力されます。out22番ポートが開放されていないようです。次は、セキュリティグループIDを指定して起動します。SecurityGroupIds=["[セキュリティグループID]"])無事ログインできました。ArgumentParserを使用してコマンドライン引数を取得するときのチートシートPythonの実行時にコマンドライン引数を取得したい場合には、Pythonの標準モジュールであるArgumentParserを使用すると便利です。18]わかりやすいですが、行数が多くなります。18]個人的には一番好きです。Pythonらしい書き方かと思います。18]Pythonではあまりmap関数は多用しないかと思いますが、他の言語から入ってきた方にはわかりやすいかもしれません。18]適用する関数の内容がシンプルな場合には、ラムダ式で十分かと思います。