使用的解析第三方 框架
compile 'org.jsoup:jsoup:1.9.2'
原理 通过匹配
网页中的标签、类、进行有规律的解析。
找到需要抓取内容的共性,比如说类,样式,标签。
url:http://www.qiushibaike.com/
使用网络加载框架为retrofit
String value = response.body(); // Log.i("TAG", "onResponse: response.body---------" + value); // text.setText(value); //1 .通过Jsoup解析成Doucment Document document = Jsoup.parse(value); //2. 从doc中拿到class="article block untagged mb15" class中有空格后面是继承关系 Elements elementsByClass = document.getElementsByClass("article"); if (isClear) { data.clear(); } //3. 取出每个元素分装成Bean for (Element ele : elementsByClass) { data.add(new JokeBean(ele)); }
public JokeBean(Element e) { // 获取用户头像 昵称 userImage = e.getElementsByClass("author").get(0).select("img").attr("src"); userName = e.getElementsByClass("author").get(0).select("img").attr("alt"); //链接地址 href = e.getElementsByClass("contentHerf").get(0).select("a").attr("href"); // 获取内容 图片e.getElementsByClass("content”)找到的是content的集合 一个页面只有一个 所以后面取第0个 this.content = ((Element) e.getElementsByClass("content").get(0)).select("span").text(); // Log.i("TAG", "JokeBean: contents---------" + contents + ":::name:" // + userNames + ":::::image:" + userImages + ":::hrefs:" + hrefs); Elements imgs = e.getElementsByClass("thumb"); if ((imgs != null) && (imgs.size() > 0)) { //有些没有图片 有些有需要判断一下 Elements es = ((Element) imgs.get(0)).select("img"); if ((es != null) && (es.size() > 0)) { this.image = ((Element) es.get(0)).attr("src"); Log.i("TAG", "JokeBean: image---------" + image); this.type = 1; } } }