天天看点

html 抓取网页中内容

使用的解析第三方  框架

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;
            }
        }


    }