Как спарсить текст с веб-страницы без тегов и с нормальными переносами
private TextView tv;
Document doc;
String textChapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView tv = findViewById(R.id.tv);
new Thread(new Runnable() {
@Override
public void run() {
// Document doc = Jsoup.connect(rulate + "/book/" + book + "/" + chapter + "/ready").get();
try {
doc = Jsoup.connect("https://tl.rulate.ru/book/18455/609681/ready").get();
Elements text = doc.getElementsByClass("content-text");
textChapter = text.text();
} catch (IOException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
tv.setText(textChapter);
}
});
}
}).start();
}
Вроде парсинг идет нормально, однако если textChapter = text.text();, то тогда получается каша из текста, а есть textChapter = text.html();, то тогда остаются <p> теги, однако нормально выставляются переносы. Как можно сделать нормальный текст с переносами?
Ответы (1 шт):
Автор решения: Andrew Bystrov
→ Ссылка
надо тогда делать по другому - парсить не весь content-text, а каждое отдельное его содержимое
doc = Jsoup.connect("https://tl.rulate.ru/book/18455/609681/ready").get();
Element contentTextElement = doc.getElementsByClass("content-text").get(0);
Elements pElements = contentTextElement.getElementsByTag("p");
StringBuilder sb = new StringBuilder();
for (Element p : pElements) {
sb.append(p).append("\n");
}
textChapter = sb.toString();