2014-06-05 5 views
0

J'essaye de gratter un site Web qui contient betting odds data.Navigation HTML Page

La façon dont la page est écrite, elle répertorie les noms de marché dans une étiquette d'étiquette qui n'est pas un parent des sélections, plus d'un séparateur pour la page. Utilisation de JSoup Je peux extraire toutes les données de sélection que je veux, mais je ne sais pas comment déterminer la valeur précédente pour 'label' pour une sélection. Donc en effet j'ai toutes les sélections et tous les prix sur la page, mais je ne peux pas déterminer si 'Brazil $ 4' se rapporte au marché de la Coupe du Monde, à l'équipe de notation la plus élevée ou à tout autre marché.

Le code que je utilise pour obtenir les marchés et sélections est la suivante:

Elements marketNames = doc.getElementsByTag("label"); 
    Elements runnerNames = doc.getElementsByClass("selection"); 

Fondamentalement maintenant j'ai une sélection comme « Brésil - 4,0 $ ». Je veux aussi savoir ce que l'étiquette précédente était, donc je peux le désigner comme "Winner - Brazil - $ 4.0"

Répondre

0

Si vous voulez l'étiquette précédente, vous pouvez itérer sur les étiquettes div afin que vous puissiez connaître l'ordre de la Étiquettes.

Elements divs = doc.select("div.sports_FfCell"); //gets the div part that has the information you want. 

for (Element div : divs) {  
    if (div.toString().contains("market")) //there is a market tag for the table labels (sports_FfCell market). 
     System.out.print(div.text() + " - "); //no new line after the winner text. 
    else 
     System.out.println(div.text().replace("MULTI", "- ")); //it gets the MULTI part too, so i replace it. 
} 

Sortie:

Place Win World Cup 2014 
Winner - Brazil - 3.75 
Argentina - 5.00 
Germany - 6.50 
Spain - 7.00 
Belgium - 21.00 
... 
+0

Il m'a fallu quelques heures, mais j'ai finalement la même solution. J'ai utilisé une approche très similaire mais pas aussi efficace que la vôtre. Je vous remercie. –

+0

De rien, je suis contente de pouvoir vous aider! – user2640782