Android 使用 JSoup 解析 HTML 转换为字符串

Android use JSoup parse HTML convert to String

我正在尝试使用 richtext 来显示 html 内容,所以我正在解析 url 尝试将 <div class="margin-box"></div> 中的所有内容获取为字符串值。 但是我无法解析 url。 代码如下:

User Soup 解析 url

Document document = Jsoup.parse(news_url);
String news_content = CommonUtil.newsContent(document);

数据采集

    public static String newsContent(Document document){
        Elements elements = document.select("div.margin-box");
        String newsContent = elements.toString();
        return newsContent;
    }

然后我得到调试结果:

显示URL解析不成功。 实际上我想获得如下值:

<div>
<p>
<imgsrc="http://p1.pstatp.com/large/1c67000332373537f0ff" img_width="640" img_height="360" inline="0" alt=“************” onerror="javascript:errorimg.call(this);">
</p>
<p class="pgc-img-caption”>***********</p><p>*************************************</p>
<p><imgsrc="http://p3.pstatp.com/large/1c6e0000841ab42ca326" img_width="640" img_height="425" inline="0" alt=“**********”onerror="javascript:errorimg.call(this);"></p>
<p class="pgc-img-caption”>********************************</p>
<p><img src="http://p1.pstatp.com/large/1c6d00008eebccce3e2f" img_width="550" img_height="375" inline="0" alt=“************” onerror="javascript:errorimg.call(this);"></p>
<p class="pgc-img-caption”>*********</p><p>**************************</p><p>*********************</p><p>*****************</p></div>

我做错了什么?

完整 HTML 块

里面没有元素 div class

首先检查 JSoup 是否可以解析内容是有用的:http://try.jsoup.org/~8W0oCmiiYnFL01nUM6HDbQ9wwTA

您正在使用 Jsoup.parse 其中 expects html stored in a string. If you want to use parse to retrieve the html source you have to pass a URL and a timeout:

String url = "http://servertrj.com/news/index/208";
Document doc = Jsoup.parse(new URL(url), 3000);

大多数时候你会找到 get() 语法来提取 html 源代码,将你的语法与这个简单的例子进行比较:

String url = "http://servertrj.com/news/index/208";
String userAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36";
Document doc = Jsoup.connect(url).userAgent(userAgent).get();
Elements elements = doc.select(".margin-box");
System.out.println(elements.size() + "\n" + elements.toString());

输出:

1
<div class="margin-box"> 
<p style="margin: 0px 0px 15px; padding: 0px; border: 0px; line-height: 30px; font-family: &quot;Microsoft YaHei;, SimSun, Verdana, Arial; color: rgb(0, 0, 0); font-size: 15px;">[... truncated because of spam detection, but same as try.jsoup]</p> 
</div>