2013-01-02 5 views
1

Je dois télécharger toutes les images d'un site Web auquel j'ai un nom d'utilisateur et un mot de passe. Dites, URL du site Web est http://example.co.in/images/Photos/ABC123.jpg de telle sorte qu'il existe de nombreuses images, mon exigence est de télécharger toutes les images. Que peut-on faire en Java, en C++ ou dans n'importe quel langage de programmation? Un exemple de code sera utile. MerciObtenir des images du site Web

en utilisant le code ci-dessous pour obtenir une image à partir du site Google

import java.io.BufferedInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.net.URL; 

class Test { 
public static void main(String args[]) throws Exception { 
    System.out.println("Hello World"); 

    URL url = new URL("http://www.google.co.in/images/google_favicon_128.png"); 
    InputStream in = new BufferedInputStream(url.openStream()); 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    byte[] buf = new byte[1024]; 
    int n = 0; 
    while (-1 != (n = in.read(buf))) { 
     out.write(buf, 0, n); 
    } 
    out.close(); 
    in.close(); 
    byte[] response = out.toByteArray(); 

    FileOutputStream fos = new FileOutputStream("C://ABC//google1.jpg"); 
    fos.write(response); 
    fos.close(); 

}} 

Maintenant je besoin d'aide là où je ne sais pas le nom d'images disent toutes les images avec l'extension .jpg (* .jpg) et il devrait stocker dans mon dossier comme 1.jpg, 2.jpg et ainsi de suite. Alors, comment obtenir le nombre de nombre d'images et comment accéder à leurs noms dans http://www.google.co.in/images/

+2

Vous êtes à la recherche d'un (http://en.wikipedia.org/wiki/Web_crawler) [* crawler *]. J'ai récemment utilisé [scrapy] (http://scrapy.org/), et il est assez simple à utiliser. – amit

+0

Recherchez les balises d'image, recherchez les URL des balises, calculez les URL de l'image si nécessaire (par exemple, les liens relatifs), récupérez via une requête HTTP normale. Quel est le problème réel? –

+0

J'ai besoin de compter des images dans les images/dossier du site Web. comment faire avec Java – prathameshr

Répondre

0

Si vous êtes un utilisateur de Linux, jetez un oeil à l'outil de ligne de commande wget

En tant qu'utilisateur de Windows vous pouvez utiliser via Cygwin (http://www.cygwin.com/)

+0

Je suis un utilisateur Win. Je dois faire en utilisant Java – prathameshr

5

Vous cherchez un crawler. J'ai récemment utilisé scrapy, et il est assez simple à utiliser.

Tout ce que vous avez à faire est de créer votre Spider. Il doit générer Request objets pour chaque URL que vous rencontrez, et vous pouvez télécharger l'image dans la page en utilisant une requête HTTP supplémentaire à l'image.

Suivez le tutorial, il est vraiment simple et vous guide pas à pas, vous expliquant comment construire votre crawler, et fournissant également un code example.

Notez que scrapy fonctionne avec python.

Il existe également crawl4j pour java. Je ne le connais pas personnellement, mais j'ai entendu dire que c'est aussi très simple.

+0

merci, je vais essayer – prathameshr

1

On dirait que vous êtes à l'aise en Java, vous pouvez essayer d'utiliser HtmlUnit.

Ils ont la méthode HtmlPage.getElementsByTagName("img"), qui vous donnera la liste des tags d'image dans le HTML. En fonction du résultat, vous pouvez obtenir l'emplacement de l'image src et télécharger l'image à partir de l'URL en utilisant votre méthode de test.

Vous pouvez également utiliser d'autres analyseurs syntaxiques HTML tels que SimpleHTML Parser, JTidy etc. pour analyser le code HTML afin d'obtenir le tag d'image.

+0

laissez-moi essayer ceci ... – prathameshr

0

Vous recherchez un moteur de recherche. Si vous allez pour Java, je recommanderais d'utiliser Jsoup pour analyser le code HTML des sites Web. Combiné avec commons.io, vous devriez être capable de le faire assez facile.

Si vous voulez un exemple de code complet, vous pouvez jeter un oeil à un récent project fait exactement cela.

Fondamentalement, tout ce que vous avez à faire est de charger tous les liens de l'attribut src des étiquettes img, puis de télécharger ces images.Vous pouvez fournir des paramètres supplémentaires tels que le type ou la taille de l'image, mais c'est à votre discrétion.

-1

Utilisez la bibliothèque crawler4j pour travailler avec.

Sur leur démonstration, l'exemple montre comment récupérer des URL contenues dans une page.

List<WebURL> links = htmlParseData.getOutgoingUrls(); 

Je n'utiliserais pas les flux d'octets pour écrire un fichier. Vous pouvez créer un objet File à partir d'un URI, puis déterminer comment écrire un fichier sur le disque.

File imageFile = new File(new URL("www.foo.someImage.jpg").toURI()); 

Une autre solution possible est avec ImageIO()

URL url = new URL("www.foo.someImage.jpg"); 

Image image = ImageIO.read(url); 

if(image != null){ 
    ImageIO.write(image, "jpg",new File("file path to save"); 
} 
+0

Le problème en cours ne sauvegarde pas une image, il récupère toutes les images d'une page Web donnée. –

+0

Ouch pour le vote vers le bas. Obtenir des URL à partir d'une page est super facile, laissé de côté parce que les bibliothèques pour les robots d'exploration Web déjà répertoriés. – Dan

Questions connexes