关于Jsoup的简单使用

来源:互联网 发布:天正软件过期怎么办 编辑:程序博客网 时间:2024/05/29 13:21

一般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地址

中文文档

官方文档


0 0
原创粉丝点击