Parser from canvas

by malikzh

JavaScript

let questions = {};
//const links = [...document.querySelectorAll('.ig-info > a')].map(el => el.href)
const links = ['https://canvas.turan-edu.kz/courses/9738/quizzes/14106'];

// main parser
(async function() {
    const parser = new DOMParser();
    i = 1;
    for (let link of links) {
        const result = await fetch(link);
        const txt = await result.text();

        const doc = parser.parseFromString(txt, 'text/html')

        for (let qh of doc.querySelectorAll('.question_holder')) {
            const question = qh.querySelector('.question_text').innerHTML.trim();

            if (!Array.isArray(questions[question])) {
                questions[question] = [];
            }

            const ans = qh.querySelector('.correct_answer');

            if (!ans) {
                continue;
            }

            const answer = ans.querySelector('label[for]').innerHTML.trim();

            if (questions[question].includes(answer)) {
                continue;
            }
            
            questions[question].push(answer);
        }
        console.log('handled ' + (i) + ' of ' + links.length + ' items')
        i++;
        
        await new Promise(r => setTimeout(r, 1000));
    }
    console.log('DONE!')
}())