Как найти все атрибуты img src из sfpg (PHP File Gallery в одном файле) - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь создать пользовательский сценарий в Greasemonkey для перебора всех изображений в следующей галерее для загрузки фактических изображений из миниатюр.

Разница между миниатюрами и изображениями заключается в значении URL-адреса.параметр запроса;поэтому мы должны изменить cmd = thumb на cmd = image .Что довольно просто.

, поэтому сначала я пытаюсь получить все теги img в переменной, а затем пытаюсь перебрать все теги и в каждой итерации использовать замену строки, чтобы превратить большой палец в изображение, чтобы получить фактическийimage.

Но этот метод не получает IMG !!!На любой другой странице я могу найти все изображения, кроме этой.

Было бы полезно, если бы кто-нибудь мог сказать мне, почему это происходит?

URL: http://sye.dk/sfpg/demo/index.php?sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKipkN2UwYWI2MTRkZGU2MTBiYjliMzEzM2M2ZDUzODE3MTY0OWU4ZWI3YjU0MzcwMTU2ODIxN2YxMTA2NWFiOWEw

В следующем фрагменте сначала я пытаюсь увидеть все изображения.теги в консоли, но он возвращает только baseURI, а не внутренние imgs.Я также проверил tags.count возвращает 1, а не 3, так как на этой странице есть три изображения.Пока я не смогу найти imgs, я не смогу выполнить следующую часть, то есть изменить URL и автоматическую загрузку.Этот код готов со мной и работает на других сайтах.

// ==UserScript==
// @name     Unnamed Script 629250
// @version  1
// @match        http://sye.dk/sfpg/demo/index.php?sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKipkN2UwYWI2MTRkZGU2MTBiYjliMzEzM2M2ZDUzODE3MTY0OWU4ZWI3YjU0MzcwMTU2ODIxN2YxMTA2NWFiOWEw
// @grant    none
// ==/UserScript==

(function() {
    'use strict';
 var tags = document.getElementsByTagName('img');
       
  for(var i=0;i<tags.length;i++){
 
      console.log(tags[i])
   
}
})();

Document Inspector Screenshot on Google Chrome

1 Ответ

0 голосов
/ 03 июня 2018

Изображения загружаются лениво - они не включаются в HTML сразу при загрузке страницы.Ленивым решением было бы добавить маленькую setTimeout, прежде чем пытаться выбрать img s.

Другая проблема заключается в том, что существует не только три img s - лучше выбрать толькоиз них в виде миниатюр, с .thumbbox img.Попробуйте что-то вроде этого:

// ==UserScript==
// @name     sveimages
// @version  1
// @match    http://sye.dk/sfpg/demo/index.php?sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKipkN2UwYWI2MTRkZGU2MTBiYjliMzEzM2M2ZDUzODE3MTY0OWU4ZWI3YjU0MzcwMTU2ODIxN2YxMTA2NWFiOWEw
// @grant    none
// ==/UserScript==

setTimeout(() => {
  const fullImageURLs = Array.from(
    document.querySelectorAll('.thumbbox img'),
    img => img.src.replace('cmd=thumb', 'cmd=image')
  );
  console.log(fullImageURLs);
}, 100);

Вывод:

Array(3)
0:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKkNsZW1lbnRpbmVzLmpwZyowZmYzZmJlOTBlZjI3MjRhMzIwYzEzY2UxNzgzMGFlYTg3ZjM2OTg0NjZhOTM3NzllNWNhNTY1Y2FkNjczNmYy"
1:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKkZ1bm55IEZydWl0LmpwZypjMmY5ZGI2ZmEzZDA1Y2UxNGE1NmQ1OGVmODA1YjhmNTU1ODU2MmZmNzZhM2RmNDUxMmFmNGRiODE5YTg1YTc1"
2:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKk9yYW5nZXMuanBnKmQ2ZDlkMDc1MDYxMWI4OTA5NDk1NGE1NzEzMmE3ZDg5YWYzNDllNjQ4YTgwMzhkODg5YzhjZTViMzZlNjUwNTM"
length:3
...