Краткий ответ:
Всякий раз, когда вы разбиваете на страницы с помощью отдельного стиля, сначала вы должны перестать думать об общем решении.
Подумайте о каждом блоке отдельно и попытайтесь получить данные по одному.одним.Таким образом, вы можете форматировать и разбивать их по своему усмотрению.
Длинный ответ:
Это похоже на довольно большое задание / задачу, которую нужно решить в одном вопросе.Однако здесь есть некоторые причины для решения этой проблемы.
Наша проблема в том, что - Формат отличается на разных страницах.- На некоторых страницах есть данные, на некоторых нет.- Нам нужно извлечь 8-10 конкретных данных.
Допустим, мы хотим извлечь оценку Superscore SAT , которая доступна на Priceton и Georgia, но не на странице Гарварда.
Нам нужно искать их всех специально или оптимизировать код для извлечения всех данных.Не существует обобщенного способа магического знания, что к чему.
// Let's grab all elements
[...document.querySelectorAll('div.number-callout')]
// And search for specific term
.find(e=>{
// We can go upper level and find the link element
// since it's the only one identifying this data
const parent = e.parentNode.querySelector('a')
// if an element is found, we search for the text there
if(parent) return parent.innerText.includes('Superscore SAT')
})
Это вернет результат только в первых двух.
Это также работает с "Superscore ACT"
Вы можете отобразить через элементыи объединить данные,
const data = {};
[...document.querySelectorAll('div.number-callout')].map(e=>{
const parent = e.parentNode.querySelector('a');
if(parent){
if(parent.innerText.includes('Superscore ACT')) data["Superscore ACT"] = true;
if(parent.innerText.includes('Superscore SAT')) data["Superscore SAT"] = true;
}
});
Результат: