3

Вот задача:

Страница содержит 300 изображений JPEG с URL-адресами, такими как http://example.com/gallery/500px-500px/7496.jpg

Я хочу отредактировать эти ссылки на http://example.com/gallery/1000px-1000px/7496.jpg

и скачать в лучшем качестве.

Как мне решить задачу сейчас: я открываю веб-страницу и загружаю все изображения в папку с помощью любого менеджера загрузок. Затем я создаю список имен изображений с помощью команд cd c:\download + dir *.* > list.txt и добавляю URL http://example.com/gallery/1000px-1000px/ с именами файлов. После этого я скачиваю новые URL с помощью любого файлового менеджера.

Как сделать этот процесс загрузки проще и быстрее? Спасибо!

3 ответа3

1

Я написал расширение Google Chrome для загрузки файлов из списка, который вы вставляете, или из URL-адресов открытых вкладок в окне.

Он называется TabSave, доступен здесь и с открытым исходным кодом (см. Описание интернет-магазина).

Ответ Зила кажется совершенно нормальным. Там будет много других учебных пособий о том, как получить ссылки с веб-страницы, если вы сделаете быстрый поиск в Интернете. Настройки безопасности расширения Chrome затрудняют связь со страницей, но как только у вас есть этот список URL-адресов, это расширение может обрабатывать загрузки.

0

Самый простой способ - написать скрипт на удобном для вас языке.

Возможно, есть букмарклет, который делает это, написанный на Javascript. Он использует DOM для перезаписи URL, а затем вы загружаете полную веб-страницу с переписанными URL.

Вы можете попробовать что-то вроде этого:

javascript:(function() {
  var i, imgs;
  imgs = $$('img');
  for (i=0; i < imgs.length; i++){
    imgs[i].src = imgs[i].src.replace('500px-500px', '1000px-1000px');
  }
})();

Другой возможностью является использование на вашем компьютере серверного языка (например, Python), который будет получать веб-страницу, а затем изображения, но для этого требуется установить интерпретатор или что-то еще.

Вы должны определить такую ссылку на панели закладок: [Большие изображения!] [1]

[1]: javascript:(function(){var i, imgs; imgs = $$('img'); for (i = 0; i <imgs.length; i++){imgs [i] .src = imgs [ i] .src.replace ('500px-500px', '1000px-1000px');}})();

0

Хотя Trylks находится на правильном пути, я добавлю свой собственный метод. , ,

Этот скрипт можно запустить, просто вставив его в консоль. Нажмите F12, чтобы открыть инструменты разработчика, и нажмите вторую кнопку внизу (a> с тремя линиями), чтобы открыть консоль.

Переменные в верхней части могут быть изменены в соответствии с ситуацией. , ,

//  User Variables  //

var IMG = true;         //True if the images are on the page as <img> elements, set to false if there are only anchor <a> links.
var TYPE = 'jpg';       //Only important when img is false, Set to the file extension of the files.

var NEWFOLDER = 'http://example.com/gallery/1000px-1000px'  //This is the folder you expect to find the new images in. It should *not* end in a '/'.

//  Begin Script    //

function getURLs() {    //Returns an array of URLs from either <img> or <a> elements for the images.
    var URLs = [];
    if (IMG) {  //If we are dealing with <img> elements. . .
        var imgs = document.getElementsByTagName('img');    //Grab the <img>'s
        for (var i in imgs) {   //Loop through them
            URLs.push(imgs[i].src); //Put the src into an array
        }
    }
    else {  //Or else we are using <a> elements.
        var reg = new RegExp('.*\.' + TYPE + '$');  //Create a regular expression to make sure this is an image (of the type defined)
        var imgs = document.getElementsByTagName('a');  //Grab the <a>'s

        for (var i in imgs) {   //Loop through them
            if (reg.test(imgs[i].href)) {   //Test that this is an image 
                URLs.push(imgs[i].href);    //Put the href in the array
            }
        }
    }

    return URLs;
}

function parseNames(urls) { //Returns an array of names
    var reg = new RegExp('^http.*\/(.*\..*)$');
    var names = [];

    for (var i in urls) {   //Loop through the urls
        if (urls[i]) {  //In case of undefined members
            names.push(reg.exec(urls[i])[1]);
        }
    }

    return names;
}

function makeLinks(files) { //Replaces the page with a list of links
    var body = document.getElementsByTagName('body')[0];    //Get the <body>
    body.innerHTML = '';    //Delete all the page content

    for (var i in files) {  //Loop through the files
        var path = NEWFOLDER + '/' + files[i];

        var link = document.createElement('a'); //Create <a>'s
        link.href = path;
        link.innerHTML = path;

        body.appendChild(link); //Append the links to the document
        body.appendChild(document.createElement('br'));
    }
}


makeLinks(parseNames(getURLs()));

Это заменит вашу страницу списком URL-адресов нужных вам файлов. Просто вставьте эти ссылки в свой менеджер загрузок.

К сожалению, нет способа заставить JS начать загрузку без помощи сервера, поэтому лучшее, что можно сделать, это дать вам список.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .