2010-12-02 28 views
0

Je suis en train de télécharger des images d'un site Web et ils sont stockés dans une table sous les éléments div. J'utilise Java avec bibliothèque HtmlUnit et c'est ce que j'ai jusqu'à présent:HtmlUnit lien de téléchargement de DIV

_page = (HtmlPage) linkToPicsPage.click(); 

    List<HtmlElement> _divList = _page.getElementsByIdAndOrName("imgcontainer"); 

    int num = 0; 
    for (HtmlElement el : _divList) { 

     InputStream is = el.click().getWebResponse().getContentAsStream(); 
     File path = new File(_downloadPath+_car.getRegNumber()); 
     if (!path.exists()) 
      path.mkdir(); 
     writeToFile(is,new File(_downloadPath+_car.getRegNumber()+System.getProperty("file.separator")+_car.getRegNumber()+"["+num+"].jpg")); 
     num++; 
    } 

Le code du site ressemble à ceci:

<table id="ctl00_ContentPlaceContenido_GridImagenes" cellspacing="0" border="0" style="border-collapse:collapse;"> 
<tr> 
<td> 
    <div id="imgcontainer"> 
     <div class="imgitem"> 
      <a href="descarga.aspx?IDOWNER=40312&amp;ID=598477&amp;Action=View"> 
       <img alt="Foto Frente Izquierda" border="0" src="imgthumb.aspx?IDOWNER=40312&amp;ID=598477&amp;Action=View"/> 
      </a> 
      <br /> 
      Foto Frente Izquierda 
     </div> 
    </div> 
</td><td> 

Mais ce que je suis TELECHARGEMENT est un code HTML au lieu de les images elles-mêmes. Je ne sais pas comment puis-je obtenir l'attribut href à partir des éléments HtmlDivision que j'obtiens dans "_divList". Aucune suggestion?

Merci

Edit1:

Ceci est le code actuel que j'utilise pour les télécharger, le problème avec ce code est que je télécharge certains éléments que je ne ai pas besoin (i télécharge tout ce qui a "descarga.aspx" dans le href). C'est pourquoi je veux être plus précis et ne télécharger que les images. Comme vous pouvez le voir, les HtmlAnchors que je reçois par la recherche de « descarga.aspx » ne me rediriger vers une autre page:

List<HtmlAnchor> picsLinks = new LinkedList<HtmlAnchor>(); 
    picsLinks = _page.getAnchors(); 
    int num = 0; 
    for (HtmlAnchor currentPic : picsLinks) { 
     if (currentPic.getHrefAttribute().contains("descarga.aspx")) { 
      InputStream is = currentPic.click().getWebResponse().getContentAsStream(); 
      File path = new File(_downloadPath+_car.getRegNumber()); 
      if (!path.exists()) 
       path.mkdir(); 
      writeToFile(is,new File(_downloadPath+_car.getRegNumber()+System.getProperty("file.separator")+_car.getRegNumber()+"["+num+"].jpg")); 
      _log.append("....Downloaded picture "+regNumber+num+".jpg\n"); 
      num++; 
     } 
     _log.setCaretPosition(_log.getDocument().getLength()); 
    } 
+0

Avez-vous bien vérifié que 'descarga.aspx' renvoie directement l'image, au lieu d'être une page de redirection? Vous devriez vous assurer que vous utilisez Firebug. – Riduidel

+0

Oui, j'ai modifié la question et ajouté l'ancien code, où vous pouvez voir que je n'ai aucun problème quand je reçois les HtmlAnchors eux-mêmes – oli206

Répondre

0

Je ne peux pas dire sans voir tout le site, mais je pense qu'il est quelque chose à faites en cliquant sur le "imgcontainer", qui contient plus que l'image. Que se passe-t-il lorsque vous cliquez manuellement sur les mots "Foto Frente Izquierda" dans un navigateur? Essayez de cliquer sur l'image directement, en utilisant getByXPath et quelque chose comme "// div [@ class = 'imgitem"]/a "(au-dessus de ma tête) au lieu de getElementsByIdAndOrName.