[python Selenium macos]ケイスト道徳と安全課程スクロールマクロ共通


KAIST道徳と安全[検索道徳][実験室安全][Cyber道徳][検索技術安全]専用コード
ケイスト修士の新入生は義務的に倫理の授業を受けなければならない.授業の内容が多くて、座って聞くのは難しいです.放送のように放送できないんですか?10分おきにシャットダウンボタンを押すのは面倒です.しかし、私はそう思いません.だから試験を受けなければなりません.耳に入れる必要があると思います.だから、クローラーを編みました.
Objective
  • 「KAIST倫理と安全」の各科目が自動的に受講するアルゴリズム.
  • 授業が終わった後、毎日クリックする必要はなく、自動的に次の授業を再確認します.
  • Coding Environment
    macOS, Python, Selenium, Jupyter Notebook
    0.開発環境の設定
    a)Python 3.x以降のインストール
    https://www.python.org/downloads/
    Pythonのホームページでx以降のバージョンをインストールします.pipは自動的にインストールされるからです.
    pipを使用すると、Seleniumを含む複数のモジュールをオンラインでロードできます.
    b)取付ブラケット
    Webスクロール用のモジュールで、インターネットブラウザを直接操作(クリック、入力)するために使用されます.特にjavascriptのように動的に編成されたページを操作することができます.ここではseleniumでWebページをクリックして自動化します.
    Pychatchを使用する場合はterminalに次のメッセージを入力してインストールできます.
    sudo pip install selenium	//MacOS
    しかし、なぜこのようにしてもPychatにインストールされていないのか分からないので、PychatにInterpreter Settingsでインストールしました.しかし,実際の作業過程ではPychatは使用されていないため,上記の過程を行う必要はない.Anacodaをインストールすると、JupyternetbookにSeleniumが自動的に内蔵されるからです.
    c)AnacodaインストールとJupyter Notebookランチ
    https://www.anaconda.com/products/individual
    Jupyter Notebookを使用すると、Seleniumを個別にインストールする必要がなく、レベルごとに実行することができ、Pychatよりもコードを書くことができます.Pychatは、コードを変更するたびに1行目からコードを再読み込みしますが、JupyTernetbookは段階的に実行できるため、より直感的です.
    d)クロムドライバのインストール
    http://chromedriver.chromium.org/
    クロムドライバは、クロムブラウザを制御できるファイルです.入力コードの開発環境とChromeブラウザをつなぐ架け橋です.使用しているChromeバージョンと一致し、上のリンクからダウンロードし、処理するPythonファイルと同じフォルダに入れます.
    1.Saleniumモジュール@Jupyter Notebookを読み込む
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.alert import Alert
    from selenium.webdriver.common.by import By
    import time
    2.Webドライバの定義と実行
    コードを作る準備ができています.このdriverを呼び出してブラウザにコマンドを発行することができます.
    driver = webdriver.Chrome()
    3.道徳課ホームページへの登録
    ここから、マウスとキーボードで操作するプロセスをコードで実現します.
    使用方法は次のとおりです.
    - driver.get(「url」):urlに接続します.
    - driver.find_element(By.XPATH, 'xpath').click():特定の要素を検索してクリックします.
    - driver.find elementby xpath(「xpath」):私が使用しているCeleniumバージョンでは、この方法を古いバージョンと呼ぶ警告があります.だから直接上の方法を使います
    - driver.暗黙wait():ページのロードを待つ.n秒後、次のコマンドを使用します.
    # 윤리교육 홈페이지 로그인 페이지 접속
    driver.get("https://eethics.kaist.ac.kr/authen/login")
    # 포탈 로그인 바로가기 클릭
    driver.find_element(By.XPATH, '/html/body/div/div[3]/div[3]/div[2]/div/div/div[2]/a').click()
    # 아이디 입력
    driver.find_element(By.ID, "IdInput").send_keys('sojungnoh')
    # 간편 인증 클릭
    driver.find_element(By.XPATH, '/html/body/div/div/div[2]/div/div/fieldset/ul/li[2]/input[1]').click() # 여기서 얼굴 인증
    # 이후 자동으로 메인 페이지 안착
    *ログイン関連
    セレンを検索してログインすると、IDやPWを入力するのが普通ですが、KAISTのログインはちょっと面倒なので、携帯電話で顔認証が必要です.幸いなことに、このプロセスはコードを書くときに何の問題もありません.携帯電話にアカウント情報があれば直接認証すればいいですでは、次のコマンドに自動的に移動します.
    *Message: no such element: Unable to locate element
    必要なコードを入力して実行すると、上記のメッセージが表示されることがあります.このとき、ブラウザはすべての要素をロードしていないうちにコマンドを発行するので、要素が見つかりません.そんな時は待ちます.次のリンクには良い説明があります.
    https://pythondocs.net/selenium/%EC%85%80%EB%A0%88%EB%8B%88%EC%9B%80-wait-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-implicitly-wait-vs-explicitly-wait/
    4.カリキュラム・リストへのアクセス
    # Research Technology Security 클릭해 탭 접속
    driver.find_element(By.XPATH, '//*[@id="header"]/div[2]/div/ul/li[6]/a').click()
    # Lectures 클릭해 수강 페이지 접속
    driver.find_element(By.XPATH'//*[@id="snb"]/ul/li[2]/a').click()
    5.プレイヤーをクリックして自動連続再生★
    この部分は今回のミニプロジェクトの核心部分です.授業が終わると自動的に次の授業のアルゴリズムが再生されます!この部分には多くのエラーがあり、Jupeterノートパソコンを使うのは光る場所です.この部分だけが切り取って運転できるからです.
    カリキュラムリストxpat変数1強'/html/boy/div/dv[3]/div[3]/dv[2]/div[2]/div/div/div/dv[1],/ul/div/div/div/div/dv[1]/ul/ul/ul/ul/ul/li[ 2]/ul/ul/li[ 2]/ul/ul/li[ 2]/ul/ul/li[ 1]/ul/li[ 1]/ul/li[ 1]/ul/ul/li[ 2]/ul/ul/li[ 1]/ul/ul/li[[[[[[[[[[[[2]/ul/ul/lili/li/li/li[[[[[[[[[[[Li/li/li[[1/2]/lin/li[]/li]/li[[[[[]/li[[[[[[[]/li]/li]/li/[2]/div/div/div[1]/ul/li[6]/ul/li[1]/span[2]/span[6 n強]/html/body/div/div[3]/div[2]/div/div[1]/div/ul/[2 lin]/ul/[1]/span[2]「2 n」
    講義内容に基づいて,ビデオ再生ボタンが持つxpathモードを把握し,{}として保持し,formatを用いて重複文に適用する.川は29本あり、rangeは(2,30)です.
    button = '/html/body/div/div[3]/div[3]/div[2]/div/div/div[2]/div/div[3]/button[2]'
    
    for i in range(2, 14, 2):
        # 수강항목 선택
        driver.find_element_by_xpath('/html/body/div/div[3]/div[3]/div[2]/div/div/div[1]/ul/li[{}]/ul/li[1]/span[2]'.format(i)).click()
        driver.implicitly_wait(3)
        # 동영상 플레이어 재생
        driver.find_element_by_xpath(button).click()
        time.sleep(840)
        # 팝업알림 확인
        da = Alert(driver)
        da.accept()
        print('{}차 수강완료'.format(i/2))
    print('수강완료')
    Alert(driver).accept():こいつのホームページにはポップアップ広告が多いですね.ポップアップウィンドウはChromeコンソールでhtmlコードで見つかりません.そこで「Celeniumポップアップ」を検索すると、ポップアップに対応する方法がありました.セレンライブラリからAlertを読み込み、「OK」をクリックします.
    再生により、完了するたびに受講が完了し、以下の結果が得られます.
    1차 수강완료
    2차 수강완료
    .
    .
    .
    6차 수강완료
    수강완료

    P.Sを聞いて、今は重要な内容がたくさんあります.静かにしないで、ラジオのように聞くことをお勧めします.