使用Jsoup抓取网页元素时如何保留原始HTML格式?
解决HTML格式保留问题
你的代码里,wholeText()方法会丢弃所有HTML标签,只提取纯文本内容,这就是无法保留原始格式的核心原因。直接使用elements.html()就能获取目标元素内部的完整HTML代码,无需额外解析转纯文本。
修改后的完整代码如下:
public class doIT extends AsyncTask<Void,Void,Void> { String translated; @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Void doInBackground(Void... params) { try { Document document = Jsoup.connect("https://studentdevos.com/").get(); org.jsoup.select.Elements elements = document.getElementsByClass("post-entry"); // 直接获取元素内部的完整HTML结构,替换原纯文本提取逻辑 translated = elements.html(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void aVoid) { tv_Jsoupe.setText(Html.fromHtml(translated)); super.onPostExecute(aVoid); } }
补充说明:
- 如果页面存在多个
post-entry类的元素,elements.html()仅会返回第一个匹配元素的HTML。若需要获取所有匹配元素的HTML,可以通过循环拼接实现:
StringBuilder htmlBuilder = new StringBuilder(); for (Element element : elements) { htmlBuilder.append(element.html()); } translated = htmlBuilder.toString();
内容的提问来源于stack exchange,提问作者Isaac Darlong
相关产品推荐
相关产品推荐

