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: "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>
我正在尝试使用 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: "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>