#javascript #arrays #web-scraping #google-chrome-devtools
#javascript #массивы #веб-очистка #google-chrome-devtools
Вопрос:
Я пытаюсь собрать некоторые данные для интересного личного проекта, и я новичок в JS. Я пытаюсь получить массив имен команд из htmlколлекции (используя инструменты разработчика Chrome). Если есть более простой способ, я открыт для него. Пока:
let vMidCollection = document.getElementsByClassName("v-mid");
vMidCollection[0]
ВОПРОС: Каждый <a></a>
содержит a <span></span>
, но мне нужен массив названий команд (подчеркнутый). Заранее спасибо.
Ответ №1:
Вы можете попробовать это с помощью querySelectorAll
const teamNames = [...document.querySelectorAll('.v-mid span.teamName')].map(e => e.textContent)
console.log(teamNames)
<a class="v-mid">
<div>
<span class="teamName">Test </span>
</div>
</a>
<a class="v-mid">
<div>
<span class="teamName">Test 1</span>
</div>
</a>
<a class="v-mid">
<div>
<span class="teamName">Test 2</span>
</div>
</a>
Ответ №2:
Вы можете использовать следующее
let vMidCollection = document.getElementsByClassName("v-mid");
team_names = []
Array.from(vMidCollection).forEach( (elem) => {team_names.push(elem.querySelector(".teamName").innerText)})
console.log(team_names)
<a class="v-mid">
<div>
Stuff
</div>
<span class="teamName">Tam 1 </span>
</a>
<a class="v-mid">
<div>
Stuff
</div>
<span class="teamName">Team 2</span>
</a>
<a class="v-mid">
<div>
Stuff
</div>
<span class="teamName">Team3</span>
</a>
Он находит каждый элемент внутри vMidCollection
, который имеет class="teamname"
, и добавляет его текст к team_names
Комментарии:
1. Это похоже на то, что я изначально пробовал, но я понимаю:
VM131724:1 Uncaught TypeError: vMidCollection.forEach is not a function at <anonymous>:1:16 (anonymous) @ VM131724:1
возможно, этот конкретный веб-сайт блокирует мне доступ к их данным?2. Извините, не проверял это заранее. Исправлено.