2010-08-02 20 views
2

i besoin d'extraire une balise d'image en utilisant jsoup de cette htmlJsoup l'image extraction tag

<div class="picture"> 
    <img src="http://asdasd/aacb.jpgs" title="picture" alt="picture" /> 
</div> 

je dois extraire le src de cette balise img ... J'utilise ce code j'obtiens la valeur null

Element masthead2 = doc.select("div.picture").first(); 
String linkText = masthead2.outerHtml(); 
Document doc1 = Jsoup.parse(linkText); 
Element masthead3 = doc1.select("img[src]").first(); 
String linkText1 = masthead3.html(); 
+0

Pouvez-vous publier le code HTML à extraire? Avec votre code n'est pas clair comment le code HTML est composé. – Impiastro

+0

c'est le html

picture
Rajesh

Répondre

1

Avec le code suivant je peux extraire correctement l'image:

Document doc = Jsoup.parse("<div class=\"picture\"> <img src=\"http://asdasd/aacb.jpgs\" title=\"picture\" alt=\"picture\" /> </div>"); 

    Element elem = doc.select("div.picture img").first(); 

    System.out.println("elem: " + elem.attr("src")); 

J'utilise jsou p release 1.2.2, le dernier.

Peut-être que vous essayez d'imprimer le code HTML interne d'un tag vide comme img.

De la documentation: "html() - Récupère le code HTML interne de l'élément".

Pour la deuxième partie de HTML, vous pouvez utiliser:

Document doc2 = Jsoup.parse("<tr> <td class=\"blackNoLine\" nowrap=\"nowrap\" valign=\"top\" width=\"25\" align=\"left\"><b>CAST: </b></td> <td class=\"blackNoLine\" valign=\"top\" width=\"416\">Jay, Shazahn Padamsee&nbsp;</td> </tr>"); 
    Elements trElems = doc2.select("tr"); 
    if (trElems != null) { 
     for (Element element : trElems) { 
      Element secondTd = element.select("td").get(1); 

      System.out.println("name: " + secondTd.text()); 
     } 
    } 

qui imprime "Jay, Shazahn Padamsee".

+0

vous remercie yar un autre ..\t \t

Taille:
\t \t
exemple texte
\t \t
-il beaucoup de dd et dt comment puis-je extraire une – Rajesh

+0

exacte Pouvez-vous expliquer ce que vous essayez de faire? Pouvez-vous poster aussi le code html de la requête? – Impiastro

+0

Comment extraire le second élément dans une classe \t \t \t \t \t \t \t CAST: \t \t \t \t \t \t \t Jay, Shazahn Padamsee   \t \tJ'ai besoin d'extraire Jay, Shazahn Padamsee   – Rajesh

1
<tr> <td class="blackNoLine" nowrap="nowrap" valign="top" width="25" align="left"><b>CAST: </b></td> <td class="blackNoLine" valign="top" width="416">Jay, Shazahn Padamsee&nbsp;</td> </tr> 

Vous pouvez utiliser:

Document doc = Jsoup.parse(...); 
Elements els = doc.select("td[class=blackNoLine]"); 
Element el= els.get(1); 
String castName = el.text(); 
6

Voici un exemple pour obtenir l'attribut source d'image:

public static void main(String... args) { 
    Document doc = Jsoup.parse("<div class=\"picture\"><img src=\"http://asdasd/aacb.jpgs\" title=\"picture\" alt=\"picture\" /></div>"); 
    Element img = doc.select("div.picture img").first(); 
    String imgSrc = img.attr("src"); 
    System.out.println("Img source: " + imgSrc); 
} 

Le sélecteur div.picture img trouve l'élément d'image sous la div.

Les principales méthodes d'extraction sur un élément sont:

  • attr(name), qui obtient la valeur de l'attribut d'un élément,
  • text(), qui obtient le contenu textuel d'un élément (par exemple dans <p>Hello</p>, texte () est "Bonjour"),
  • html(), qui obtient HTML interne d'un élément (<div><img></div> html() = <img>) et
  • outerHtml(), qui obtient un des éléments HTML complet (<div><img></div> html() = <div><img></div>)

Vous n'avez pas besoin de réanalyser le HTML comme dans votre exemple actuel, soit sélectionner l'élément correct en premier lieu à l'aide d'un sélecteur plus spécifique, ou appuyez sur la méthode element.select(string) pour vaincre.