Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.08.2021, 16:14
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 145

Как сделать XPATH запрос с несколькими элементами?
Загружаю https://www.youtube.com/results?search_query=music
Пытаюсь с помощью XPATH запроса

//h3[@class='title-and-badge style-scope ytd-video-renderer']


найти строку

<a id="video-title" class="yt-simple-endpoint style-scope ytd-video-renderer" title="Best songs to boost your mood ~ Chill vibes ???? Chill out music mix playlist" href="/watch?v=E4KMnaOF7lU" aria-label="Best songs to boost your mood ~ Chill vibes ???? Chill out music mix playlist by Chilled Feelings 14 hours ago 56 minutes 42,032 views">


Но находит только (см скрин): https://prnt.sc/1ip3ou8

Как изменить XPATH чтоб находил в выдаче все элементы и чтоб в каждом было сразу title="" href="" aria-label=""
и желательно чтоб ставил между ними разделитель, например такой @@@ .

Должно получится что-то вроде этого: Best songs to boost your mood ~ Chill vibes ???? Chill out music mix playlist @@@ /watch?v=E4KMnaOF7lU @@@ Best songs to boost your mood ~ Chill vibes ???? Chill out music mix playlist by Chilled Feelings 14 hours ago 56 minutes 42,032 views

Последний раз редактировалось mik888em, 03.08.2021 в 16:26. Причина: ошибка
Ответить с цитированием
  #2 (permalink)  
Старый 03.08.2021, 16:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

mik888em,
<!DOCTYPE html>

<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    body{
        font-weight: bold;
    }

    </style>

</head>

<body>
<a id="video-title" class="yt-simple-endpoint style-scope ytd-video-renderer" title="Best songs to boost your mood ~ Chill vibes ???? Chill out music mix playlist" href="/watch?v=E4KMnaOF7lU" aria-label="Best songs to boost your mood ~ Chill vibes ???? Chill out music mix playlist by Chilled Feelings 14 hours ago 56 minutes 42,032 views"></a>
<script>
 let elem = document.querySelector('#video-title');
 attr = 'title,href,aria-label'.split(',').map(key => elem.getAttribute(key)).join(' @@@ ');
 document.body.append(attr)
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 03.08.2021, 17:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от mik888em
Пытаюсь с помощью XPATH запроса
Как вариант...

<a 
	id="video-title" 
	class="yt-simple-endpoint style-scope ytd-video-renderer" 
	title="Best songs to boost your mood ~ Chill vibes ???? Chill out music mix playlist" 
	href="/watch?v=E4KMnaOF7lU" 
	aria-label="Best songs to boost your mood ~ Chill vibes ???? Chill out music mix playlist by Chilled Feelings 14 hours ago 56 minutes 42,032 views"
>
	Test
</a>
<script>
const o = document.evaluate('//a[@id="video-title"] ', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null );

const arr = []
arr.push(o.singleNodeValue.title)
arr.push(o.singleNodeValue.href)
arr.push(o.singleNodeValue.ariaLabel)
alert(arr.join('\n'));
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 04.08.2021, 00:37
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 145

Я сначала сохраняю код страницы поиска ютуба https://www.youtube.com/results?search_query=music в переменную [[KOD]]
Подскажите, а как применить этот JS-код к этой переменной [[KOD]],

На странице много видео, и JS-код должен для каждого видео собрать результат, и получится что-то вроде этого:
Best songs to boost your mood ~ Chill vibes ???? Chill out music mix playlist @@@ /watch?v=E4KMnaOF7lU @@@ Best songs to boost your mood ~ Chill vibes ???? Chill out music mix playlist by Chilled Feelings 14 hours ago 56 minutes 42,032 views

Metallica - Live in Berlin, Germany (2019) [Full Webcast] [AUDIO UPGRADE] @@@ /watch?v=s_hYeCZo2Nw @@@ Metallica - Live in Berlin, Germany (2019) [Full Webcast] [AUDIO UPGRADE] by metfan4l 1 year ago 2 hours, 26 minutes 4,829,409 views

и так далее вниз спаршеное из [[KOD]]
Ответить с цитированием
  #5 (permalink)  
Старый 04.08.2021, 07:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

mik888em,
цикл по всем "[id='video-title']"
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Акардион меню из чекбоксов и списка, как сделать подсветку текущего элемента OliLoi jQuery 0 08.11.2016 08:15
Как сделать чтобы кнопка «Назад» работала бы в пределах определенного сайта? Askeer Общие вопросы Javascript 7 14.10.2016 12:23
Как сделать чтобы кнопка «Назад» работала бы в пределах определенного сайта? Askeer Общие вопросы Javascript 0 12.10.2016 18:58
Как сделать чтоб запрос повторялся до победи? nolik2000 Общие вопросы Javascript 3 02.08.2016 11:12
POST запрос воспринимается как OPTIONS neshta AJAX и COMET 0 29.03.2011 23:34