So habe ich Probleme herauszufinden, wie man die Daten vollständig manipulieren, die ich mit Jsoup scraping. Ich weiß, wie man die Bereiche anvisiert, aber ich weiß nicht, wie man sie einzeln anvisiert, aber gruppiert sie immer noch.Jsoup - Daten abrufen und bearbeiten
Beispiel:
<div class="panel panel-default">
<div class="panel-heading">
<p> Heading1 </p>
</div>
<div class="panel-body">
<p> Body1 <p>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<p> Heading2 </p>
</div>
<div class="panel-body">
<p> Body2 <p>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<p> Heading3 </p>
</div>
<div class="panel-body">
<p> Body3 <p>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<p> Heading4 </p>
</div>
<div class="panel-body">
<p> Body4 <p>
</div>
ich verschiedene Abschnitte in diesem HTML ausrichten möchten und legen Sie sie dann in Textviews auf eine bestimmte Weise. Aber wenn ich versuche, zum Beispiel div.panel-Überschrift & div.panel-Körper und ich möchte die Überschrift über den Körper setzen wird es alle div.panel-Überschriften für die gesamte Seite zuerst dann unter diesem dann wiederholen wiederhole alle div.panel-bodys. Man druckt sie in völlig getrennten Gruppen anstatt übereinander.
Unten ist der Code Ich verwende:
private void arbitrage() {
new Thread(new Runnable() {
@Override
public void run() {
final StringBuilder builder = new StringBuilder();
final StringBuilder builder2 = new StringBuilder();
try {
Document doc = Jsoup.connect("THE URL HERE").get();
Elements links = doc.select("div.panel.panel-default > div.panel-heading");
Elements links2 = doc.select("div.panel.panel-default > div.panel-body");
for (Element link : links) {
builder.append("\n").append(link.text());
builder2.append("\n").append(links2.text() + "\n");
}
} catch (IOException e) {
builder.append("Error : ").append(e.getMessage()).append("\n");
}
runOnUiThread(new Runnable() {
@Override
public void run() {
arbitrage.setText(builder.toString() + builder2.toString());
}
});
}
}).start();
}
== - == - == - = - EDITED == - == - = -
I habe den HTML-Code geändert, um besser darzustellen, wie die Web-URL aussieht. Wenn ich meinen aktuellen Code ausführe, wird er angezeigt.
Heading1
Heading2
Heading3
Heading4
Body1
Body2
Body3
Body4
Ich möchte, dass es wie folgt angezeigt wird.
Heading1
Body1
Heading2
Body2
Heading3
Body3
Heading4
Body4
So im Wesentlichen, ich mag individuell, um den Panel-Position & Panel-Körper greifen, aber sie zusammen in einer Gruppe angezeigt werden. Ich kann sie beide in einer Gruppe finden, indem ich div.panel.panel-default auswähle, aber ich habe nicht so viel Kontrolle darüber, wie dies vom Standpunkt der Benutzeroberfläche aus angezeigt wird. Zumindest weiß ich nicht, wie ich diese Daten manipuliere, wenn ich alles so zusammenkratze.
EDIT ZWEI = - = - = - = - = - = - = - = -
Ich bin nah dran, dieser Code ermöglicht es mir, die Daten einzeln besser, zu manipulieren, aber kann immer noch nicht tun, was ich brauche . Ich möchte die Überschrift & Körper sagen, sagen wir verschiedene Farben. Ich kann das nicht herausfinden.
for (Element panel : panels) {
Elements links = panel.select("div.panel-heading");
Elements links2 = panel.select("div.panel-body");
builder.append("\n").append(links.text()).append("\n").append("\n").append(links2.text())
.append("\n")
.append("\n");
}
änderte mein runOnUIThread dazu:
runOnUiThread(new Runnable() {
@Override
public void run() {
arbitrageTextView.setText(builder.toString());
}
});
Aber wenn ich die Textfarbe ändern für den Header unterscheidet sich von dem Körper mögen möchte ich bin nicht in der Lage. Oder fügen Sie eine Trennlinie zwischen allen Gruppen hinzu, erlaubt mir dies nicht. Es scheint nur sehr begrenzt auf der UI-Seite der Dinge, erlaubt es mir nicht, sie zu stilisieren, nur ziehen sie und zeigen sie an. Ich glaube, das liegt daran, dass es alles unter einem textView zieht, müsste ich sie in zwei verschiedene textViews einfügen? diese
ich Ihre Frage nicht ganz verstehen kann. Ich habe den Code ausgeführt und getan, was er tun soll. Können Sie ein Beispiel geben, was Sie wollen? –
@RizwanEjaz Ich habe meine Frage und den HTML-Code aktualisiert, um besser zu reflektieren, wie die URL aussieht.Ich habe auch hinzugefügt, was mein aktueller Code ausgibt und was ich ausgeben soll. –