SAXException
。是否可以解析Android中的HTML? >
#1 楼
我刚遇到这个问题。我尝试了几件事,但决定使用JSoup。这个jar大约是132k,这有点大,但是如果您下载源代码并删除一些您不会使用的方法,那么它就不会那么大。=>这样做的好处是它将处理格式错误的HTML
这是他们网站上的一个很好的例子。
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
//http://jsoup.org/cookbook/input/load-document-from-url
//Document doc = Jsoup.connect("http://example.com/").get();
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
评论
您可以尝试包括完整的jar,然后在生产版本中的应用程序上运行ProGuard,以清除未使用的代码。
–安德鲁·麦肯齐(Andrew Mackenzie)
13年11月21日在17:50
注意:JSoup非常慢。
–凯文
2014年3月3日在6:39
@kevin该说法的来源?您可能启用了一些调试功能。
– goetzc
16年9月2日在16:45
在客户端呈现html页面期间使用Java脚本动态加载内容怎么办? Jsoup也将显示此内容吗?
–MikeL
16年11月6日在14:04
#2 楼
您是否尝试过使用Html.fromHtml(source)?我认为该类在源代码质量方面相当宽松(它内部使用TagSoup,该标签在设计时考虑到了现实生活中的不良HTML) 。虽然它不支持所有HTML标记,但是它确实提供了一个处理程序,您可以实现该处理程序以对不了解的标记做出反应。
评论
这很简单,我无法搜索确切的内容(例如XPATH)
–user586399
2015年11月9日在12:08
请注意。这将“挂起所有线程”。我面对比当它带有html格式文本的json。正确显示html文本没有问题,但是使用html.fromhtml()后,我遇到了这个问题。
–大卫
16-2-23在13:37
#3 楼
String tmpHtml = "<html>a whole bunch of html stuff</html>";
String htmlTextStr = Html.fromHtml(tmpHtml).toString();
评论
漂亮简单,没有插件,喜欢它! tnxs
–RonEskinder
15年12月16日在18:28
注意:在从Html.fromHtml(str)返回的Spanned对象上调用toString()将使许多HTML标记不起作用(包括 )。因此,如果您要设置textview,请执行以下操作:myTextView.setText(Html.fromHtml(str))
– Sakiboy
16年5月11日在19:34
@Sakiboy你是对的。除此之外,还有许多其他标记不适用于Html.fromHtml()。检查一下stackoverflow.com/a/3150456/1987045
–拉胡尔(Rahul Raveendran)
16-09-28在13:13
太棒了,正是我想要的,我的服务器端开发人员正在向我发送html,现在我可以轻松地将其转换为原始字符串了,谢谢
–祖尔古纳·贾特(Zulqurnain Jutt)
18年4月6日在8:05
#4 楼
我们都知道编程具有无限的可能性。对于一个问题,有很多解决方案可供选择,因此我认为上述所有解决方案都是完美的,对某人可能会有帮助,但对我来说,这可以节省我的时间。所以代码就是这样的
private void getWebsite() {
new Thread(new Runnable() {
@Override
public void run() {
final StringBuilder builder = new StringBuilder();
try {
Document doc = Jsoup.connect("http://www.ssaurel.com/blog").get();
String title = doc.title();
Elements links = doc.select("a[href]");
builder.append(title).append("\n");
for (Element link : links) {
builder.append("\n").append("Link : ").append(link.attr("href"))
.append("\n").append("Text : ").append(link.text());
}
} catch (IOException e) {
builder.append("Error : ").append(e.getMessage()).append("\n");
}
runOnUiThread(new Runnable() {
@Override
public void run() {
result.setText(builder.toString());
}
});
}
}).start();
}
你只需要在
onCreate Method
的MainActivity
中调用上述函数我希望这对你们也有帮助。
还请阅读Medium中的原始博客
#5 楼
也许您可以使用WebView,但是正如您在文档中所看到的,WebView默认情况下不支持javascript和其他诸如小部件之类的东西。 webkit / WebView.html我认为您可以根据需要启用javascript。
评论
是的,您可以轻松启用JS。但无需使用webview进行html解析。
–人
2012年5月28日12:26
那没有回答问题
–luckyhandler
15年6月16日在21:51
评论
我怀疑Rhino依赖项将使htmlunit难以在Android上进行编译,但是您可以尝试...另外,某些其他非严格的HTML解析器(例如汤)也可以工作。我想知道是否可以在这里使用webkit。