4 votes

Comment obtenir les urls de toutes les images d'une page, les modifier et les télécharger ?

Voici une tâche :

Une page contient 300 images JPEG avec des urls du type http://example.com/gallery/500px-500px/7496.jpg

Je veux modifier ces urls en http://example.com/gallery/1000px-1000px/7496.jpg

et télécharger en meilleure qualité.

Comment je réalise la tâche maintenant : J'ouvre une page web et je télécharge toutes les images dans un dossier avec n'importe quel gestionnaire de téléchargement. Ensuite, je crée une liste des noms des images avec cd c:\download + dir *.* > list.txt et ajoutez l'url http://example.com/gallery/1000px-1000px/ portent les noms des fichiers. Après cela, je télécharge les nouvelles urls en utilisant n'importe quel gestionnaire de fichiers.

Comment rendre ce processus de téléchargement plus facile et plus rapide ? Merci !

1voto

Louis Maddox Points 636

J'ai écrit une extension Google Chrome pour télécharger des fichiers à partir d'une liste que vous collez, ou à partir des URL des onglets ouverts dans une fenêtre.

Ça s'appelle TabSave disponible ici et en open source (voir la description de la boutique en ligne).

La réponse de Zeel semble tout à fait correcte. Vous trouverez de nombreux autres tutoriels sur la façon de récupérer les liens d'une page Web si vous effectuez une recherche rapide en ligne. Les paramètres de sécurité de l'extension Chrome rendent difficile la communication avec la page, mais une fois que vous avez cette liste d'URL, cette extension peut gérer les téléchargements.

0voto

rmc47 Points 453

Le moyen le plus simple est de créer un script dans un langage qui vous est familier.

Une possibilité est d'avoir un bookmarklet qui fait cela, écrit en Javascript. Il utilise le DOM pour réécrire les URL et vous téléchargez ensuite la page Web complète avec les URL réécrits.

Vous pouvez essayer avec quelque chose comme ça :

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

Une autre possibilité est d'utiliser un langage serveur (par exemple Python) dans votre ordinateur qui récupérera la page web et ensuite les images, mais cela nécessite l'installation d'un interpréteur ou autre.

Vous devriez définir un lien comme celui-ci dans votre barre de signets : [Grandes images !][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');}})() ;

0voto

Onion Points 217

Bien que Trylks soit sur la bonne voie, je vais ajouter ma propre méthode. . .

Ce script peut être exécuté en le collant simplement dans la console. Appuyez sur F12 pour ouvrir les outils de développement, et cliquez sur le deuxième bouton en bas (un > avec trois lignes) pour ouvrir la console.

Les variables en haut de la page peuvent être modifiées pour s'adapter à la situation. . .

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

Cela remplacera votre page par une liste d'URL vers les fichiers que vous souhaitez. Il suffit de coller ces liens dans votre gestionnaire de téléchargement.

Malheureusement, il n'y a aucun moyen de faire en sorte que JS lance les téléchargements sans l'aide du serveur, donc le mieux que je puisse faire est de vous donner une liste.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X