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!')
}())