J'écris un analyseur HTML, qui utilise Tagsoup pour passer une structure bien formée à XMLSluper.
Voici le code généralisé: P>
#href1#href2: Here is the addressTelephone number: telephoneHere is another addressAnother telephone: 0845 1111111
merci. p> p>
3 Réponses :
Remplacez le grep avec Rechercher: alors vous obtiendrez p> html.'**'.grep { it.@class == 'divclass' }.ol.li.each {
it.each { linkItem ->
def link = linkItem.h3.a.@href
def address = linkItem.address.text()
println "$link: $address\n"
}
}
C'était un problème délicat. Quand il n'y a qu'un seul élément avec la classe = 'divclass' la réponse précédente est bien. S'il y avait plusieurs résultats de Grep, une recherche () pour un seul résultat n'est pas la réponse. Soulignant que le résultat est une arracheliste est correct. L'insertion d'une boucle dominée externe () fournit un GPathResult dans le paramètre de fermeture div em>. À partir de là, l'exploration peut continuer avec le résultat attendu. html."**".grep { it.@class == 'divclass' }.ol.li.each { it.each { linkItem ->
def link = linkItem.h3.a.@href
def address = linkItem.address
println "$link: $address\n"
}}
Je crois que les réponses précédentes sont toutes correctes au moment de la rédaction de la version utilisée. Mais j'utilise httpbuilder 0.7.1 et Grails 2.4.4 avec Groovy 2.3.7 et il y a un gros problème - Les éléments HTML sont transformés en majuscules. Strong> Il semble que cela soit dû à Nekohtml utilisé sous la hotte. : http://nekohtml.sourceforge.net/faq.html#uppercase P> Pour cette raison, la solution dans la réponse acceptée doit être écrite comme suit: P> html.'**'.find { it.@class == 'divclass' }.OL.LI.each { linkItem ->
def link = linkItem.H3.A.@href
def address = linkItem.ADDRESS.text()
println "$link: $address\n"
}