Java Extraire les données de la table du site?


Nouveau sur Java et j'ai récemment commencé à apprendre à lire du HTML à partir d'un site Web en utilisant Java, mais j'ai essayé d'apprendre à l'analyser et à extraire des éléments(données utiles). J'ai cherché la meilleure façon de le faire et Jsoup a continué à venir alors j'ai décidé de l'essayer. J'ai pu tirer des éléments de table mais il y a beaucoup de HTML inutile qui serait bien à supprimer.. Comment puis-je tirer la table de ce site et avoir juste les éléments de ligne y a-t-il un moyen facile avec Jsoup?

String html = "http://beta.letsplaysoccer.com/facilities/26/teams/187822";

         Document doc = Jsoup.connect(html).get();
         Elements tableElements = doc.select("table");
         System.out.print(tableElements);

Merci pour toute aide!

Edit: HTML inutile comme dans les balises, les noms de classe, etc.. Si je voulais utiliser ces données de table, je voudrais juste utiliser disons les dates du jeu ou quelque chose de pas

<td> <a href="/facilities/26/games?exact_date=14-03-30">Sun 03-30-14 07:25 PM</a></td>

Ce que je voudrais éventuellement faire, c'est extraire ces données dans ma propre interface graphique ou quelque chose

Author: Timeflies, 2014-03-11

1 answers

Jsoup aide, mais vous devrez naviguer manuellement à travers tout le HTML, ce qui est assez pénible...

Voici par exemple quelque chose pour imprimer les parties jouées avec leur score dans le premier tableau:

import java.io.IOException;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.select.Elements;
import org.junit.Test;

public class JSoupTest {

    @Test
    public void testJSoup() throws IOException {
        String html = "http://beta.letsplaysoccer.com/facilities/26/teams/187822";

        Document doc = Jsoup.connect(html).get();
        Elements tableElements = doc.select("table");

        Element firstTable = tableElements.get(0);

        List<Node> firstTableRows = firstTable.childNodes().get(1).childNodes();
        int numRows = firstTableRows.size();
        // skip first row as header
        for (int i = 1; i < numRows; i++) {
            Node row = firstTableRows.get(i);
            if (row instanceof Element) {
                Node homeTeam = row.childNode(5).childNode(1).childNode(0);
                Node visitorTeam = row.childNode(7).childNode(1).childNode(0);
                // some are in bold
                if(visitorTeam.childNodeSize() > 0 ){
                    visitorTeam = visitorTeam.childNode(0);
                }
                Node score = row.childNode(9).childNode(0);
                System.out.println(homeTeam + " vs " + visitorTeam + ": " + score);
            }
        }

    }
}
 1
Author: XSen, 2014-03-12 05:30:11