blog

webのスクレイピングについて

// ==UserScript==
// @name         Zeus Wifi Datepicker Auto Click with Popup Close
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  出発日と帰国日を自動選択し、ポップアップを閉じる
// @author       Your Name
// @match        https://zeus-wifi.jp/entry/overseas/select?mplan_id=*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 要素が見つかるまで待機する関数
    function waitForElement(selector, callback) {
        const element = document.querySelector(selector);
        if (element) {
            callback(element);
        } else {
            setTimeout(function() {
                waitForElement(selector, callback);
            }, 500);  // 500ミリ秒ごとに要素が存在するか確認
        }
    }

    // 1. ポップアップを閉じる処理
    waitForElement('.guidance-popup-close-button', function(closeButton) {
        closeButton.click();  // ボタンのクリックイベントをシミュレート
        console.log('Popup closed.');
    });

    // 2. 出発日と帰国日を自動設定
    waitForElement('#datepicker_start', function(departureDatePicker) {
        let futureDate = new Date();
        futureDate.setDate(futureDate.getDate() + 5);
        let dateString = futureDate.toISOString().split('T')[0];

        // 出発日に値を設定してクリック
        departureDatePicker.value = dateString;
        departureDatePicker.dispatchEvent(new Event('change', { bubbles: true }));
        departureDatePicker.click();
        console.log('Departure date set.');
    });

    waitForElement('#datepicker_end', function(returnDatePicker) {
        let futureDate = new Date();
        futureDate.setDate(futureDate.getDate() + 5);
        let dateString = futureDate.toISOString().split('T')[0];

        // 帰国日に値を設定してクリック
        returnDatePicker.value = dateString;
        returnDatePicker.dispatchEvent(new Event('change', { bubbles: true }));
        returnDatePicker.click();
        console.log('Return date set.');
    });

})();

-blog