【VBA】HTTP通信でWEBスクレイピング1~フォーム送信の仕組み~

フォーム送信の仕組み

9月?まだまだ暑い!Jimです。どうも✋

 

自分が子どもの時は、布団蹴飛ばして寝冷えしたことあったんだけど。。

寝冷えが夏の季語だったのは遠い過去の話か。。。

 

ほいっ!ってことで、今回から数回に分けてHTTP通信を使ったWEBスクレイピングについて記事を書いていきますよ。

《WEBスクレイピング》っていったら『WEBブラウザの自動化でしょ?』と思うかもしれないが今回は違うのだ。

ブラウザの自動化だとブラウザ(ライブラリやドライバー)に依存されるので、ブラウザがやってるHTTP通信部分を自動化していく。

要はブラウザがやってる通信をVBAでプログラムするってこと。

なので、それにあたってブラウザが何をやっているかっていうのを見ていく。

 

あまり他人様に迷惑を掛けたくないので、ログイン機能をphpでブログ用に作成しました。

仕様⇒

リンクに飛ぶと、こんな感じのWEBサイトにいくはず。

 

 

 

 

 

 

そして、WEBサイトに書いてあるユーザー名(admin)とパスワード(1234)を入力して実行すると。。。

 

上の画像のようにログインできるようになっていますよ。って仕様。

 

じゃあ、HTTP通信は何をやっているか~なんだけど、まず『CTRL+U』か『F12のElements』でHTMLのform部分を確認しよう。

<form method="POST" action="authenticate.php">
    <input type="hidden" name="_csrf" value="296303a2612dd91f42c9cf59ad5a9d5a">

    <div>
        <label>ユーザー名:
            <input type="text" name="username">
        </label>
    </div>

    <div>
        <label>パスワード:
            <input type="password" name="password">
        </label>
    </div>

    <button type="submit">ログイン</button>
</form>

 

ユーザー名とパスワードのテキストボックスとログインボタンが配置されていて。。

このログインボタンを押下すると、ブラウザは下記の通信をしているはず。。。

 

method="POST"⇒

POSTで送信する

 

action="authenticate.php"⇒

送信先(フルパス):https://bw-rocket.com/http_scraping/authenticate.php

 

name="username"⇒

usernameの値を送信

 

name="password"⇒

passwordの値を送信

 

実際にログインボタンでformの内容を送信して『F12』の開発者ツールで送信内容を確認する。

NetworkのHeadersからNameが『authenticate.php』を確認してみよう。。。

 

 

こんな感じでauthenticate.phpにPOSTしていることが確認できる。

次にHeadersからPayloadに変更してformの内容を確認してみよう。。。

 

 

formのユーザー名(admin)とパスワード(1234)が送信されていることが確認できる。。。

そう。VBAで同じ通信をすればログインできるでしょ!という発想ね。

次回から順番にVBAで実装していくことにする。

 

 

はい。ってことで、第1回は『フォーム送信の仕組み』でした。

一人でphpでログイン画面を用意してVBAでHTTP通信を自動化するっていう謎記事が始まった。

もう実装できているんだけど、一つの記事に詰め込むとアホみたいな量になるので分割していくね。

次回は『GETでログイン画面を取得する』です。

また見てくれよな✋