版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_39397471/article/details/77744616
使用jsoup
导入依赖:
compile 'org.jsoup:jsoup:1.10.3'
使用Jsoup解析 果壳网 -> 小组 的数据
- 请求网络需要异步进行;
- 注意申请权限;
- 使用Jsoup.connect()方法需要抛异常;
- 解析果壳网:
- 首先链接需要解析的网址,使用Jsoup的connect()方法:
//http://www.guokr.com/group/
Document document = Jsoup.connect("http://www.guokr.com/group/").get();
//System.out.println(document);
Log.e(TAG, "parsingGuoKr: 标题" + document.title());//获取标题
- getElementsByClass()方法查找class中的元素,通常返回一个Elements集合;
//通过class查找元素
Elements titles = document.getElementsByClass("titles");
- 通过first()方法获取集合中的第一个元素:
//第一个titles中的所有元素
Element l1 = titles.first();
- 通过getElementsByTag()方法获取标签;
//获取所有的li标签
Elements li = titles.first().getElementsByTag("li");//获取所有的li标签
- 遍历Elements数组,获取每一个title-link块中的标题:
for (Element e : li) {
//获取到title-link元素集,再获取第一个元素
Element elementsByClass = e.getElementsByClass("title-link").first();
...
- 使用after()方法获取标签中的内容,返回Element;
- 使用text()方法获取文本;
- 使用arrt();方法获取超链接;
...
//找到a标签 再获取文本
Element titleA = elementsByClass.after("a");
System.out.println("标题" + titleA.text());
System.out.println("标题的超链接" + titleA.attr("href"));
}
- 获取Elements的超链接:
...
Elements title_imgs = e.getElementsByClass("title-imgs");
for (Element imgs:title_imgs) {
Elements title_img = imgs.getElementsByClass("title-img");
Elements a = title_img.after("a");
for (Element ima : a) {
String aStr = ima.toString();
int i1 = aStr.indexOf("(");
int i2 = aStr.indexOf(")");
System.out.println(aStr.substring(i1+1,i2));
}
}
直接解析String类型Html数据:
- Html.fromHtml(pStr)方法,返回String类型;
final TextView tv = (TextView) findViewById(R.id.tv);
Document document = Jsoup.connect("http://www.guokr.com/post/794784/").get();
Element gbbcode_content = document.getElementsByClass("gbbcode-content").first();
final String pStr = gbbcode_content.getElementsByTag("p").toString();
System.out.println(pStr);
runOnUiThread(new Runnable() {
@Override
public void run() {
tv.setText(Html.fromHtml(pStr));
}
});