Python Web ペ-ジ自動操作
自動操作の実現
ここまでで、環境変数読出ファイルを作成する事ができました。
引き続き、自動操作の実現に取組みます。
自動操作を実現するために MechanicalSoup ライブラリを使用します。
名前から推察できるように内部で Beautiful Soup を使用しています。
StatefulBrowser オブジェクトを作成するとあたかも
これを通常のブラウザのように扱うことができます。
すなわち通常のブラウザを操作するのと似た感覚でプログラムを書くことができます。
MechanicalSoup を使用する
Ubuntu ディスクトップにある □>_ アイコンから端末画面を開き、
次のコマンドを入力し MechanicalSoup ライブラリをインストールします。
$ sudo pip3 install MechanicalSoup
インスト-ル経過をみると
Installing collected packages: soupsieve, beautifulsoup4, MechanicalSoup
となって無事別途必要な beautifulsoup4 もインスト-ルされたことがわかります。
Pear::Auth 認証 サンプル表示に自動ログイン
Cookpad の MY メニュ-に自動ログインしたいのですが、少し敷居が高いので
まずはもっと簡単な
Pear::Auth 認証 サンプル表示
に自動ログインしてみます。
このログインファイルの構成については
Pear::Auth 認証の概要
Pear::Auth 認証基本ファイル概要
に行くとその詳細がこと細やかに書かれています。
よって自動ログインに関してはやさしいと思います。
何しろログインファイルのプログラム内容がわからないと MechanicalSoup はうまく動かないのです。
Pear::Auth 認証用 .env ファイル作成
Pear::Auth 認証 サンプル表示にログインするための
ID とパスワ-ドを .env ファイルに追加作成します。
Pear::Auth 認証スクリプト PHP ファイル Auth-com-30.php
に行くと20行目あたりに
$params = array(
'cryptType' => 'crypt',
'users' => array(
'63pear' => 'xyxqaLuHY7Ipc',
));
の記述があり、
ID は 63pear であることがわかります。
もっと詳細には、
Pear::Auth 認証スクリプトファイル作成
に行くと PASSWORD は 1234567 であることがわかります。
よって、.env ファイルに追加すべき内容を
PEAR_LOGIN=63pear
PEAR_PASSWORD=1234567
とします。
Ubuntu ディスクトップ画面から端末画面を開き
public_html へ移動します。
yamada@ubuntu-20:~$ cd public_html
そして .env ファイルを nano エディタで開きます。
Web ペ-ジ自動操作概要
で説明したように .env ファイルにはすでに
COOKPAD の情報が2行ここまでに書き込まれていますので、
このあとに、さらに Pear::Auth 認証用の
ID → PEAR_LOGIN=63pear
パスワ-ド → PEAR_PASSWORD=1234567
の各情報を追記します。
2行追記された結果は下記のようになります。
yamada@ubuntu-20:~/public_html$ nano .env
COOKPAD_LOGIN=yamada_8@yahoo.co.jp
COOKPAD_PASSWORD=y1234567
PEAR_LOGIN=63pear
PEAR_PASSWORD=1234567
追記作成が終わったら
Ctrl + o
Enter
Ctrl + x
で終了します。
次に、
yamada@ubuntu-20:~/public_html$ cat .env
で中身を確認します。
ちょっと上級者的ファイル作成
if __name__ == '__main__':
の if 文を使用すると
Pythonではクラスや関数などをまとめたモジュールを作成できます。
モジュールをインポートすると、その機能を利用できます。
また、モジュール自身も Python プログラムなので、そのモジュールを直接実行することもできます。
モジュールをテストする時など、
「モジュールを直接実行した時」と「モジュールをインポートした時」で動作を変えたい場合があります。
このような場合に
if __name__ == '__main__'
の構文を使います。
モジュールを直接実行した場合に、__name__ 変数の中身が、'__main__' になることを利用した手法です。
def main():
・・・・・
if __name__ == '__main__':
main()
とすると
import された場合は、この if 文の内部 main() は実行されません。
一方、直接実行された場合は、この if 文の内部 main() が実行されます。
ここまでで、Pear::Auth 認証 サンプル表示に自動ログインするファイルを作成する準備ができました。
引き続き、自動ログインファイルを作成していきます。