получите значение href первого якоря для каждого элемента

#javascript

Вопрос:

Я пытаюсь извлечь ссылки из rss-каналов из https://blog.feedspot.com/hr_rss_feeds/

Мне просто нужно запустить скрипт в консоли DevTools и получить результат.

Сценарий, который я придумал, таков

 var selects=document.querySelectorAll("p.trow.trow-wrap a");
for (i = 0; i < selects.length;   i) {

      if (selects[i].getAttribute("rel") === "noopener nofollow")
      {
        console.log (selects[i].item(1).href);
      }
}
 

Проблема в том, что он получает URL-адрес как RSS-канала, так и сайта

Мне нужны только URL-адреса RSS-канала. Как я могу console.log первый якорь или selects[i] (на каждом цикле).

Ответ №1:

Следующее не кажется идеальным, но обеспечивает довольно последовательный результат

 const feedLinks = [...document.querySelectorAll("p.trow.trow-wrap")].map(el=>{
  return el.querySelector('a').href
})
console.log(feedLinks)
 

Комментарии:

1. Это близкий к точному ответ. Я получил 129 баллов из 150.

2. Честно говоря, я не очень хотел тратить время на поиск аномалий

3. Не могли бы вы, пожалуйста, объяснить, что делает этот код.

4. [...doc.queryAll] Часть превращает <p> список узлов в массив и совпадает с Array.from(doc.queryAll) ним . Затем использует Array map() для этих элементов и возвращает href первого a в <p>

Ответ №2:

OP здесь код, который работает для меня, это:

 var selects=document.querySelectorAll("p.trow.trow-wrap");
for (i = 0; i < selects.length;   i) {
        console.log (selects[i].querySelectorAll("a")[0].href);
}