Вы используете jQuery для чего-то, что может быть сделано в нативном javascript.
document.querySelectorAll работает с селекторами в основном как jQuery. Он не возвращает массив, но (на мой взгляд) громоздкий NodeList .
Чтобы правильно выполнить итерацию, я предпочитаю распространять в массив и затем вызовите forEach на нем.
[...document.querySelectorAll('.foo')].forEach((element, index) => {
console.log(element.innerText);
});
<div class="foo">bar</div>
<div class="foo">baz</div>
<div class="foo">bal</div>
Кроме того, метод получения данных в настоящее время различен.
На всех изображениях вам нужно сначала вызвать щелчок.
Это активирует javascript обработчики событий, которые будут устанавливать href изображения деда.
Вам нужно разрешить запускать обработчики событий Google во-первых, мы отсоединяем оставшуюся часть нашего потока выполнения, чтобы скрипт Google мог сделать свое дело и обновить DOM. Мы делаем это с помощью setTimeout () .
Затем, когда скрипты Google запустились, элементы DOM были обновлены, наши запланированные тайм-ауты получили шанс на запуск, и теперь href заполнены.
До щелчка ссылка выглядит следующим образом:
после нажатия
теперь мы видим, что HREF был заселен. Введенный URL:
https://www.google.com/imgres?imgurl=https%3A%2F%2Fwww.researchgate.net%2Fprofile%2FJerome_Droniou%2Fpublication%2F305983658%2Ffigure%2Ffig5%2FAS%3A668650201690119%401536430039650%2FMesh-patterns-for-the-tests-using-the-HMM-method-left-Test-1-right-Test-2.png&imgrefurl=https%3A%2F%2Fwww.researchgate.net%2Ffigure%2FMesh-patterns-for-the-tests-using-the-HMM-method-left-Test-1-right-Test-2_fig5_305983658&tbnid=_UuLNMPCQAT0uM&vet=12ahUKEwjhsu31zcnoAhWbgKQKHR3jAdUQMygAegUIARDTAQ..i&docid=LThLi5REXoitfM&w=428&h=428&q=hmm%20test&ved=2ahUKEwjhsu31zcnoAhWbgKQKHR3jAdUQMygAegUIARDTAQ
В этом URL мы видим после imgurl=
что-то, начинающееся с https. Это наш целевой URL-адрес изображения, но он был закодирован и является частью большего URL-адреса.
Таким образом, мы манипулируем строкой с помощью простой подстроки.
Тогда у нас все еще есть странные символы
https% 3A% 2F% 2F www.researchgate.net%2Fprofile%2FJerome_Droniou%2Fpublication%2F305983658%2Ffigure%2Ffig5%2FAS%3A668650201690119%401536430039650%2FMesh-patterns-for-the-tests-using-the-HMM-method-left-Test-1-right-Test-2.png
, для этого мы можем использовать decodeURIComponent () , чтобы преобразовать его в обычный URL
document.write(decodeURIComponent('https%3A%2F%2Fwww.researchgate.net%2Fprofile%2FJerome_Droniou%2Fpublication%2F305983658%2Ffigure%2Ffig5%2FAS%3A668650201690119%401536430039650%2FMesh-patterns-for-the-tests-using-the-HMM-method-left-Test-1-right-Test-2.png'))
Затем мы добавляем это в наш массив.
Когда мы обработаем все, мы создадим файл urls и загрузим его.
var urls = [];
var count = 0;
[...document.querySelectorAll('.rg_i')].forEach((element, index) => {
let el = element.parentElement.parentElement;
el.click();
count++;
setTimeout(() => {
let google_url = el.href;
let start = google_url.indexOf('=' , google_url.indexOf('imgurl'))+1;
let encoded = google_url.substring(start, google_url.indexOf('&', start));
let url = decodeURIComponent(encoded);
urls.push(url);
console.log(count);
if(--count == 0) {
let textToSave = urls.join('\n');
let hiddenElement = document.createElement('a');
hiddenElement.href = 'data:attachment/text,' + encodeURI(textToSave);
hiddenElement.target = '_blank';
hiddenElement.download = 'urls.txt';
hiddenElement.click();
}
}, 50);
});