2017-10-05 19 views
1

Je sais vaguement comment analyser les tables HTML dans jsoup, mais la table que je travaille avec est quelque part dans la page Web et je ne sais pas comment se rendre à elle: https://finance.yahoo.com/calendar/earnings?symbol=nflxComment extraire/analyser cette table html dans java en utilisant jsoup?

Il est celui avec le dates de revenus.

Je sais que vous avez à faire

Document doc = Jsoup.connect("https://finance.yahoo.com/calendar/earnings?symbol=nflx").get(); 

Puis dans une boucle:

for (Element table : doc.select("some string") { 

comment puis-je obtenir la chaîne nécessaire à la table?

Répondre

2

Vous n'avez pas besoin de traverser tout le code avec for (Element table : doc.select("some string") { vous pouvez obtenir le tableau directement à partir du code. Pour pouvoir obtenir la table, vous devez d'abord inspecter le code en utilisant les outils de développement de votre navigateur préféré (en supposant que vous en utilisez un qui a). Comme ceci:

enter image description here

et identifier l'élément que vous voulez obtenir, dans votre cas, la table spécifique:

<table class="data-table W(100%) Bdcl(c) Pos(r) BdB Bdc($c-fuji-grey-c)" data-reactid="4"> 

Le code pour y accéder est:

Document doc = Jsoup.connect("https://finance.yahoo.com/calendar/earnings?symbol=nflx") 
        .timeout(600000) //added timeout because my internet sucks 
        .get(); 
Elements tableDiv = doc.getElementsByAttributeValue("class", "data-table W(100%) Bdcl(c) Pos(r) BdB Bdc($c-fuji-grey-c)"); 

Ensuite, vous avez une collection org.jsoup.select.Elements où vous pouvez analyser de la même manière, obtenir les éléments à l'intérieur de la table en utilisant les méthodes getElementsBy[whateverAreAvailable]

Voici un exemple comment vous pouvez imprimer seulement cette table:

tableDiv.forEach(tbody -> tbody.getElementsByTag("tbody") 
           .forEach(tr -> System.out.println(tr))); 

Utilisez votre IDE favori pour découvrir les méthodes à utiliser. Je pense que cela vous suffit pour déterminer où aller.

+0

Merci! Cependant, je reçois le code html comme résultat:

+1

Oui bien sûr. Vous devez analyser plus. Je ne vous ai pas donné le code pour le faire, mais j'ai montré le chemin pour que vous puissiez le comprendre vous-même. Du corps vous obtenez les TR et des TR vous obtenez les TD et ses valeurs. La raison pour laquelle je ne vous ai pas donné le code exact est parce que c'est un site pour apprendre/enseigner que nous ne sommes pas un service de code libre. Il est là dans la réponse, utilisez les méthodes 'getElementsBy ....' et vous obtiendrez les valeurs. –