关于Jsoup的简单使用

一般app客户端需要数据的时候,如果有搭建服务器,可以通过网络请求后台提供的接口或者公开免费的数据平台,请求返回一般是json数据,解析以后展示出来。

但是如果想要获取某个网页上的数据的时候怎么办呢?这个时候就可以通过Jsoup来搞定了。

1.首先导包,下载jsoup-1.8.1.jar包,然后添加到lib中。

2.找一个你喜欢的网页,比如在Chrome浏览器,选择你想要的数据右键,检查,就可以招到想对应的html块,比如我找到了一个学校的新闻版块,如下。

<div class="newslist">
                    <ul>
                        
                        <li><span>[2016-12-29]</span><a href="news_info7549.html" title="我校举行2016级新生军训动员大会">我校举行2016级新生军训动员大会</a></li>
                        
                        <li><span>[2016-12-21]</span><a href="news_info7528.html" title="我校师生参加泉州市委宣讲团学习贯彻省第十次党代会精神报告会">我校师生参加泉州市委宣讲团学习贯彻省第十次党代会精神报告会</a></li>
                        
                        <li><span>[2016-12-16]</span><a href="news_info7511.html" title="我校举行首届“互联网+”创意设计大赛">我校举行首届“互联网+”创意设计大赛</a></li>
                        
                        <li><span>[2016-12-13]</span><a href="news_info7509.html" title="我校举行首届思政课课外实践与调研成果展示大赛">我校举行首届思政课课外实践与调研成果展示大赛</a></li>
                        
                        <li><span>[2016-12-12]</span><a href="news_info7454.html" title="我校开展“携手抗艾,重在预防”系列活动">我校开展“携手抗艾,重在预防”系列活动</a></li>
                        
                        <li><span>[2016-12-12]</span><a href="news_info7449.html" title="我校举行2017届毕业生大型综合校园招聘会">我校举行2017届毕业生大型综合校园招聘会</a></li>
                        
                        <li><span>[2016-12-09]</span><a href="news_info7427.html" title="我校党委举行学习党的六中全会精神暨部署期末党建工作会议">我校党委举行学习党的六中全会精神暨部署期末党建工作会议</a></li>
                        
                        <li><span>[2016-12-07]</span><a href="news_info7426.html" title="我校与福建众益太阳能科技股份公司举行校企合作签约仪式">我校与福建众益太阳能科技股份公司举行校企合作签约仪式</a></li>
                        
                        <li><span>[2016-12-07]</span><a href="news_info7425.html" title="我校举办大学生疾病预防与急救知识专题讲座">我校举办大学生疾病预防与急救知识专题讲座</a></li>
                        
                        <li><span>[2016-12-06]</span><a href="news_info7392.html" title="我校举办2016年度志愿服务总结表彰暨青年志愿者协会成立十周年庆典晚会">我校举办2016年度志愿服务总结表彰暨青年志愿者协会成立十周年庆典晚会</a></li>
                        
                    </ul>
                </div>

3.封装爬取到的信息,并且建一个集合作为存储。

在子线程中去操作,当存储信息的集合“装好了以后”,通过Handler去发送消息到主线程,通知适配器绑定数据到ListView。         

代码如下

public class MnustNews  {
    public String url;
    public String title;
    public String date;
}

  new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Document doc = Jsoup.connect("http://www.mnust.cn/news.html").get();
                            Elements links = doc.select("div.newslist").select("li");
                            for (Element e:links){
                                Log.i("MYNEWS", "详情链接:" + e.select("a").attr("href"));
                                Log.i("MYNEWS", "标题:" + e.select("a").attr("title"));
                                Log.i("MYNEWS", "时间:" + e.select("span").text());
                                MnustNews news = new MnustNews();
                                news.url = URL + links.select("a").attr("href");
                                news.title = links.select("a").attr("title");
                                news.date = links.select("span").text();
                                newsList.add(news);
                            }
                            handler.sendEmptyMessage(666);
                            Log.i("MYNEWS","NewsList大小:"+newsList.size());
                        }catch (IOException e){
                            e.printStackTrace();
                        }
                    }
                }).start();
 private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (msg.what==666){
                listView.setAdapter(new MyAdapter(newsList,MainActivity.this));
            }
        }
    };

4.最后可以通过重新ListView的item点击事件,打开对应的网页,有两种办法,一种是可以使用WebView,一种是使用浏览器的方式(这边使用的是后者)

 Uri uri = Uri.parse(newsList.get(i).url);
        Intent intent = new Intent(Intent.ACTION_VIEW,uri);
        startActivity(intent);

以上就是Jsoup的基本使用了,其中要注意点是

1.在清单文件中添加网络权限

2.这个操作需要在子线程中去

Document doc = Jsoup.connect("http://www.mnust.cn/news.html").get();


当然了上面也可以不用Handler,可以使用AsnycTask。

关于难一点的是,因为没有怎么接触过html,所以关于解析方面还是有挺大的问题。

附上Jsoup的api地址

中文文档

官方文档


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值