weranda
@weranda

Как открыть на JS результаты выдачи Google?

Приветствую.

Ситуация. Надо сделать закладку в браузере таким образом, чтобы при клике на нее открывало 5 первых результатов выдачи ПС Google, но раньше с таким не сталкивался и удалось сделать вот это:
javascript:(
    document.querySelectorAll('.g > div > div > a').forEach(link => link.click())
)()

Но открывается только первая страница, а нужно сделать так, чтобы их пять или другое заданное количество открывалось.
  • Вопрос задан
  • 84 просмотра
Решения вопроса 2
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
Ну вот сразу бы и писали в вопросе про букмарклеты.

подробно:
javascript:(
  Array.from(document.querySelectorAll('#rso > div:last-child a[data-ved]:not([id])')) // находим подходящие ссылки. Все у которых есть атрибут data-ved и нет id и лежат в последнем диве у элемента с id = rso
    .slice(0, 5) // режем до первых 5ти
    .forEach(i => window.open(i.href, '_blank')) // Открываем. Нужно будет разрешить открытие всплывающих окон в браузере. Иначе откроет только 1.
)(); void 0;


Для закладки:
javascript:(Array.from(document.querySelectorAll('#rso > div:last-child a[data-ved]:not([id])')).slice(0, 5).forEach(i => window.open(i.href, '_blank')))(); void 0;


Так как классы там обфусцированные и скорее всего каждый билд меняются, то положиться можно только на DOM структуру, и я сделал допущение, что на id тоже можно положиться, так как они выглядят так, будто всегда будут такими. Но если структура поменяется - нужно будет вносить правки.

P.S. используются методы Array.from и стрелочные функции, которые не работают в старых браузерах. Но как их заменить - легко гуглится.
Ответ написан
@zkrvndm
Софт для автоматизации
Код у вас правильный. Просто браузер блокирует открытие сразу нескольких вкладок) Короче откройте настройки Chrome, далее перейдите в Настройки сайтов, найдите Всплывающие окна и переадресация -> Разрешено. Профит!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Sopromat4ik
спасибо за код. модифицировал для выгрузки урлов топа. мне было очень нужно получать именно их.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы