Как мне выделить текст внутри a, который находится внутри htmlколлекции ссылок , используя JavaScript?

#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. Извините, не проверял это заранее. Исправлено.