【勉強メモ07】MSの自動回答ツールを作成しよう


はじめに

今回記事作成者の機械学習などの勉強&メモのために記事を作成しています
間違いなどありましたらコメントにてご指摘いただけると幸いです。

目的

アンケート結果から可視化を行いたいが、まだ実施していないため、データがない。
そのため、ダミーデータを作成する。

実施方法

MicrosoftのFormsの自動回答ツールをPythonで作成します。

自己責任

これを参考に自動化する場合は自己責任でお願いします。
この記事を参考にし、損害が発生しても一切責任は取りません。

00.今回の環境

PC:MacBook Air (M1)(メモリ:16GB)
Pythonのバージョン: 3.8.5
Choromバージョン: 96.0.4664.110

01.Chromeのドライバーを準備する。

Google Chromeの右上に縦点3つがあるのでそこをクリック
「Chrome ⇨ヘルプ⇨Chromeについて→Chromeのバージョン確認」
上記手順でChromeのバージョンを確認します。

バージョンを確認したのちに下記URLでChromeで自動化行えるドライバーをダウンロードする。
ドライバーはChromeのバージョンに合わせて行う。
今回は「96」のバージョンのため、下記文言に従ってダウンロードをする。
If you are using Chrome version 96, please download ChromeDriver 96.0.4664.45

ドライバーのありか
https://chromedriver.chromium.org/downloads

ダウンロードしたドライバーは
Pythonファイルと同じ場所に置いておく

02.Pythonの環境構築をする。

#pipインストールでPythonで行える環境を構築する。
#最初に実施するときはコメントアウトを外してインストールしてください。
!pip install selenium
!pip install chromedriver
#最新バージョンかは要確認
#クロムのバージョンと一致しているかを確認
!pip install chromedriver_binary==96.0.4664.45

Pythonのバージョンを確認する場合

# Pythonのバージョンを確認したい場合
import sys

print(sys.version)

03. 実行準備を進めていく

#ライブラリーを読み込む
# webページ読み取り用
from selenium import webdriver
# chromを読み取り用
import chromedriver_binary
# 待機時間設定用
import time
# ランダムに回答する用
import random
# 日付、時間を出力する用
import datetime
##上記のは、どのくらい時間がかかるか計測する用である。
##下記プログラムを実行することで実行したときの時間を出すことができる。
#print(datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S'))


04.自動化のための関数を作る

複数ページにわたる場合、毎回プログラムを記載するのは大変である。
そのため、関数を作る方が良い

#Q ⇨設問数
#s ⇨選択肢
#D ⇨上から何問目か

def Sec4 (Q,s,D):
    y = Q + 1
    x = s + 1
    d = D + 1
    #クリックするcopy xpathを入力する
    Xpath='//*[@id="form-container"]/div/div/div[1]/div/div[1]/div[2]/div[2]/div['+str(d)+']/div/div[2]/div/div['+str(y)+']/div['+str(x)+']/input'
    #クリックする関数を作成する
    element = driver.find_element_by_xpath(Xpath)

    return element.click()


Xpathの見方は下記URLを参考

参考URL

#次のページに移動する方法
def Next():
    #回答後にエラーが出ないように次のページいくまでに2秒待つ
    time.sleep(2)
    #クリックするcopy xpathを入力する
    Xpath = '//*[@id="form-container"]/div/div/div[1]/div/div[1]/div[2]/div[3]/div[1]/button[2]/div'
    #クリックする関数を作成する
    element = driver.find_element_by_xpath(Xpath)
    #クリックを実行する
    element.click()
    #回答後に2秒待つ
    return time.sleep(2)

05.ブラウザーを開くプログラムを構築する


#Chromeを読むこむためのドライバーを呼び出す
#同じフォルダーにドライバーがある場合
driver = webdriver.Chrome(executable_path="./chromedriver")

#Chromeを呼び出す
driver = webdriver.Chrome()

#呼び出すURLを指定する
url = '呼び出したいURLを記入する'

#URLを開く
driver.get(url)

#4秒待機する(開くのに時間がかかっても動かせるようにするため)
time.sleep(4)