使用的解析第三方 框架
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;
}
}
}