Como obter URLs de todas as imagens em uma página, editá-las e fazer o download

3

Aqui está uma tarefa:

Uma página tem 300 imagens JPEG com URLs como http://example.com/gallery/500px-500px/7496.jpg

Eu quero editar esses URLs para http://example.com/gallery/1000px-1000px/7496.jpg

e faça o download em melhor qualidade.

Como posso realizar a tarefa agora: abro uma página da Web e faço o download de todas as imagens para uma pasta com qualquer gerenciador de downloads. Em seguida, criei uma lista dos nomes da imagem com os comandos cd c:\download + dir *.* > list.txt e adicionei o url http://example.com/gallery/1000px-1000px/ aos nomes dos arquivos. Depois disso, faço o download dos novos urls usando qualquer gerenciador de arquivos.

Como tornar esse processo de download mais fácil e rápido? Obrigado!

    
por Vasko-Sisko 27.05.2013 / 01:33

3 respostas

1

Escrevi uma extensão do Google Chrome para fazer download de arquivos de uma lista que você colou ou dos URLs de guias abertas em uma janela.

Ele se chama TabSave , disponível aqui e em código aberto ( veja a descrição da loja virtual).

A resposta de Zeel parece perfeitamente bem. Haverá muitos outros tutoriais sobre como obter links de uma página da Web se você fizer uma pesquisa rápida on-line. As configurações de segurança da extensão do Chrome dificultam a comunicação com a página, mas, depois de ter essa lista de URLs, essa extensão pode lidar com os downloads.

    
por 26.05.2014 / 18:31
0

A maneira mais fácil é criar um script em algum idioma que seja confortável para você.

Uma possibilidade é ter um bookmarklet que faça isso, escrito em Javascript. Ele usa o DOM para reescrever as URLs e, em seguida, você faz o download da página completa com as URLs reescritas.

Você pode tentar algo assim:

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');
  }
})();

Outra possibilidade é usar uma linguagem de servidor (por exemplo, Python) no seu computador que irá obter a página da web e, em seguida, as imagens, mas isso requer a instalação de um intérprete ou algo assim.

Você deve definir um link como este em sua barra de favoritos: [Imagens grandes!] [1]

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

    
por 14.10.2013 / 20:26
0

Enquanto o Trylks está no caminho certo, adicionarei meu próprio método. . .

Esse script pode ser executado simplesmente colando-o no console. Pressione F12 para abrir as ferramentas de desenvolvimento e clique no segundo botão na parte inferior (a > com três linhas) para abrir o console.

As variáveis no topo podem ser alteradas para se adequarem à situação. . .

//  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()));

Isso substituirá sua página por uma lista de URLs para os arquivos desejados. Basta colar esses links no seu gerenciador de downloads.

Infelizmente, não há como fazer o JS iniciar os downloads sem ajuda do lado do servidor, então o melhor que isso pode fazer é fornecer uma lista.

    
por 14.10.2013 / 22:11