2011-06-11 6 views
3

Pour la vie de moi, je ne peux pas comprendre comment sélectionner le imr src en utilisant jsoup le lien se terminant par "51u1FaI-FHL._SL500_AA300_.jpg".Jsoup sélection des données de la table

J'ai essayé plusieurs choses mais aucune n'a fonctionné. De l'aide?

doc1 = Jsoup.connect("http://rads.stackoverflow.com/amzn/click/B0051HDDO2").timeout(20000).get(); 
Element table = doc1.select("table[class=productImageGrid]").first() 
Iterator<Element> ite = table.select("td[height=300]").iterator(); 

Merci, Cody

<table style="text-align: center;" border="0" cellpadding="0" cellspacing="0" width="300"> 
    <tr> 
    <td id="prodImageCell" height="300" width="300" style="padding-bottom: 10px;"><img onclick="if(0){ async_openImmersiveView(event);} else {openImmersiveView(event);}" class="prod_image_selector" style="cursor:pointer;" onload="if (typeof uet == 'function') { uet('af'); }" **src="http://ecx.images-amazon.com/images/I/51u1FaI-FHL._SL500_AA300_.jpg"** id="prodImage"/><div id="prodImageCellInner" style="position: relative; height:0px; "><!--Comment for IE as it is empty div--></div></td> 
    <td id="prodVideoClick" style="display:none"></td> 
    <img id="loadingImage" src=http://g-ecx.images-amazon.com/images/G/01/ui/loadIndicators/loading-large_boxed._V192195297_.gif style="position: absolute; z-index: 200; display:none"> 
</tr> 
    <tr> 
    <td class="tiny" style="padding-bottom: 5px;">&nbsp;<span id="prodImageCaption" style="color: #666666; font-size: 10px;">Click for larger image and other views</span>&nbsp;</td> 
    </tr> 
</table> 

Répondre

0

@ user793728: essayez ceci: -

document = Jsoup.connect("http://rads.stackoverflow.com/amzn/click/B0051HDDO2").timeout(20000).get(); 

Elements elements =document.select(".prod_image_selector"); 
    for (Element element : elements){ 
     Attributes imageAttributes=element.attributes(); 
     for (Attribute attribute: imageAttributes){ 
      if(attribute.getKey().equals("src")){ 
      String imageURL=attribute.getValue(); 
      } 
     } 

    } 
0

La question semble être ici que l'Amazone est de retour différent HTML à jsoup que de votre navigateur, basé sur la requête UserAgent.

J'ai défini UserAgent sur un navigateur connu et j'ai sélectionné l'élément en utilisant l'ID #prodImage, et j'ai obtenu le résultat OK.

E.g.

Document doc = Jsoup.connect("http://rads.stackoverflow.com/amzn/click/B0051HDDO2") 
     .timeout(20000) 
     .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.91 Safari/534.30") 
     .get(); 
Element img = doc.select("#prodImage").first(); 
System.out.println(img.attr("src")); 

Retours http://ecx.images-amazon.com/images/I/51u1FaI-FHL._SL500_AA300_.jpg

Pour résoudre les problèmes comme ça, je suggesst fournir en sortie doc.html() et regardant le récupéré, analysé HTML, car il peut être différent du code HTML de votre navigateur vue-source (comme les serveurs peuvent renvoie des affichages HTML et source-source différents avant que le code HTML ne soit rangé et intégré dans un DOM).

Espérons que cela aide!

Questions connexes