Ich bin mir nicht ganz sicher, wie man diese Frage oder Titel so formuliert es hier geht es. Ich verwende jsoup, um eine Webseite zu analysieren (http://champion.gg/statistics/) und ich versuche, die Statistiken aus ihrer Tabelle mit diesem Code zu greifen.Parsing PHP-Daten von HTML-Webseite mit Jsoup
public void connect(String url) {
try {
Document doc = Jsoup.connect(url).userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36").get();
System.out.println(doc.toString());
Element table = doc.select("table[class=table table-striped]").first();
Element tbody = table.select("tbody").first();
Iterator<Element> rows = tbody.select("tr").iterator();
rows.forEachRemaining(row -> {
System.out.println(row.toString());
});
} catch(IOException exception) {
if(Settings.DEBUG) {
Program.LOGGER.log(Level.SEVERE, "There was an error reading the document with the supplied URL!", exception);
}
Program.alert("Error loading webpage!");
}
}
und es produziert dieses Ergebnis
<tr ng-repeat="champion in filteredChampions = (championData | startsWith:search.title | filter:roleSort | orderBy:[order+sortExpression.sortBy,order+sortExpression.lastSortBy])">
<td class="rank">{{indexNumber($index, filteredChampions.length)}}</td>
<td ng-class="{'selected-column':determineSelected('title')}"> <a href="/champion/{{champion.key}}/{{champion.role}}">
<div class="tsm-tooltip tsm-angular-champion-tt" data-type="champions" data-name="{{champion.key}}" data-id="{{matchupData}}">
<div class="matchup-champion {{champion.key}}"></div>
<span class="stat-champ-title">{{champion.title}}</span>
</div> </a> </td>
<td class="stats-role-title" ng-class="{'selected-column':determineSelected('role')}">{{champion.role}}</td>
<td ng-class="{'selected-column':determineSelected('winPercent')}"> <span ng-class="{'top-half': (champion.general.winPercent >= 50), 'bottom-half': (champion.general.winPercent < 50)}">{{champion.general.winPercent}}%</span> </td>
<td ng-class="{'selected-column':determineSelected('playPercent')}">{{champion.general.playPercent}}%</td>
<td ng-class="{'selected-column':determineSelected('banRate')}">{{champion.general.banRate}}%</td>
<td ng-class="{'selected-column':determineSelected('experience')}">{{champion.general.experience}}</td>
<td ng-class="{'selected-column':determineSelected('kills')}">{{champion.general.kills}}</td>
<td ng-class="{'selected-column':determineSelected('deaths')}">{{champion.general.deaths}}</td>
<td ng-class="{'selected-column':determineSelected('assists')}">{{champion.general.assists}}</td>
<td ng-class="{'selected-column':determineSelected('largestKillingSpree')}">{{champion.general.largestKillingSpree}}</td>
<td ng-class="{'selected-column':determineSelected('totalDamageDealtToChampions')}">{{champion.general.totalDamageDealtToChampions}}</td>
<td ng-class="{'selected-column':determineSelected('totalDamageTaken')}">{{champion.general.totalDamageTaken}}</td>
<td ng-class="{'selected-column':determineSelected('totalHeal')}">{{champion.general.totalHeal}}</td>
<td ng-class="{'selected-column':determineSelected('minionsKilled')}">{{champion.general.minionsKilled}}</td>
<td ng-class="{'selected-column':determineSelected('neutralMinionsKilledEnemyJungle')}">{{champion.general.neutralMinionsKilledEnemyJungle}}</td>
<td ng-class="{'selected-column':determineSelected('neutralMinionsKilledTeamJungle')}">{{champion.general.neutralMinionsKilledTeamJungle}}</td>
<td ng-class="{'selected-column':determineSelected('goldEarned')}">{{champion.general.goldEarned}}</td>
<td ng-class="{'selected-column':determineSelected('overallPosition')}">{{champion.general.overallPosition}}</td>
<td ng-class="{'selected-column':determineSelected('overallPositionChange')}"><span class="glyphicon" ng-class="{'glyphicon-arrow-up': (champion.general.overallPositionChange > 0), 'glyphicon-arrow-down': (champion.general.overallPositionChange < 0), 'same-position': (champion.general.overallPositionChange === 0)}">{{Math.abs(champion.general.overallPositionChange)}}</span></td>
</tr>
Anstatt nun das Ergebnis für die durchschnittliche Menge der Herstellung tötet eine bestimmte Champion hat es champion.general.kills im Ergebnis sagen, werde ich bekommen. Wie analysiere ich die Seite, so dass anstelle von champion.general.kills wird es ein tatsächliches Ergebnis wie 8 geben?
Es sieht so aus, als ob die Website Angular verwendet, um die Statistik in die Ansicht zu injizieren. Vielleicht [diese Antwort] (http://stackoverflow.com/questions/14904776/parse-javascript-with-jsoup) könnte Ihnen helfen. –