Android开发一大神器

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:truebyb
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Jsoup 是Android应用开发中著名的第三方类库,其主要应用于操作html文件,获取用户需要的数据。该技术主要通过获取URL 地址、HTML 格式的文本内容进行解析 。同时它还提供了一套非常完善的API接口规范,让开发人员只需在程序中调用相应的接口即可。尤其是Jsoup功能强大的选择器,能够让用户方便的通过访问节点名称或者HTML元素中的id即可轻松获取数据。正因为它所具有的这些优势让它在轻量级的应用中,省去了操作数据库的麻烦。该文主要通过讲解Jsoup在android应用开发中所占的优势,以及如何解析百度新闻网为契机,进而介绍Jsoup的使用方法。
  关键词:Android轻应用;Jsoup
  中图分类号:TN927 文献标识码:A 文章编号:1009-3044(2015)08-0063-03
  随着社会的发展与进步,信息量呈现出爆炸式的增长速度。与此同时,伴随着智能手机的日益普及,手机在人们的日常生活中逐渐扮演着越来越重要的角色。另外,近年来随着我国4G网络的全面覆盖,也使得手机在移动互联网上的应用也越来越丰富,网上看视频、刷微博、聊微信等几乎成了手机族的最爱。越来越多的开发者也开始从事互联网信息交互技术的研究,范围涵盖了移动通信、信息交互、电子商务等方面。目前,国内最常见的移动开发平台主要有Android,IPhone以及Windows Phone,大部分的在校大学生所使用的智能手机主要是以Android系統为代表。而本文所介绍的Jsoup技术正是基于Android平台下,在文中将通过介绍Jsoup技术来实现百度新闻网数据的抓取。
  1 Jsoup简介
  Jsoup是Android应用开发中著名的第三方类库,其主要应用于解析html文件,获取用户需要的数据。它提供了一套非常完善的API接口规范,开发者可以通过DOM遍历或者类似于jQuery的操作方法来取出和操作数据。同时它还包含了一个支持最新 HTML5技术的解析器分支,能够很好的降低解析的时间和内存的占用。Jsoup主要提供了以下几个功能:
  1)解析,通过给定的URL地址、html文件或者html格式的字符串来获取数据。
  2)查找,通过DOM遍历或者CSS选择器来寻找和抽取数据。
  3)操作,能够处理HTML元素、属性和文本,主要包括查找和修改。
  4)检查,通过白名单机制来保护HTML内容的安全。
  2 Jsoup的优势
  1)无需数据库支持
  有时候在制作一些手机APP时,出于安全性因素考虑,对方不愿直接提供原始数据库,只提供一个网站给我们充当数据源,也就意味着APP应用中所有的数据都需要从网站中获取,这时候就需要对网页中的html元素进行解析,获取想要的数据。目前市面上有许多主流开源爬虫框架,但如果只是爬取网页中少量数据的情况下,可以自已编写爬虫类,然后利用Jsoup对html元素进行解析即可。
  2)无需自己维护
  对于app软件的制作,最难的可能还是后期数据的维护工作,尤其是涉及到针对数据的增、删、改等操作,需要考虑后台数据库与手机界面显示数据的同步问题,以及多用户同时操作同一条数据的互锁问题。而Jsoup只是单纯的解析某个网页上的数据,而且网页上的html格式比较固定,而且普通用户往往也无法直接对网页数据进行修改,即使网页数据有所更新,由于html标识未发生改变,用户重新进入app应用后即可看到更新后的数据,故对于开发者无需考虑数据维护的问题。
  3)访问数据效率高
  大多数的app都会和数据库进行交互,无论是SQLite数据库还是远程的数据库,用户在手机上对数据的修改,都会涉及到两个操作,先将修改后的数据写入数据库,再将新数据从数据库中读出并显示在手机终端,如果连接的是SQLite数据库,则两次操作所耗费的时间很短,几乎可以忽略,但如果连接的是远程的数据库,则需要视网络的连接状况,有时可能需要耗费较长的时间,而且开发者又往往在程序中设置了延时,一旦在延时内仍未获取到最新的数据时,可能就会造成app的异常终止。而使用Jsoup只涉及单方面的读取操作,通过编写的爬虫类抓取html代码,然后再使用Jsoup进行解析网页代码取出相应数据。即使网页数据更改了,如果手机app中设置了向下滑动刷新数据的功能,只需要向下滑动手指即可,或者退出后重新进入该app即可。
  4)强大的选择器
  在解析并提取 HTML 元素时,以往比较常用的是传统的DOM方式的元素解析。
  例如:
  其中用到了getElementById()和getElementsByTag()这2个方法,它们分别可以根据HTML元素的id、节点名称来获取对应的元素或元素列表。
  一般情况下,一个HTML元素的组成部分包括:节点名、属性和文本。Jsoup的选择器就能够根据这些标识方便的进行数据的检索。在元素检索方面,Jsoup的选取器简直无所不能。无论是在获取数据、修改数据方面极大的减轻了开发者的负担。通过使用语句Document doc = Jsoup.parse(“网页文件”,"UTF-8","BaseURL/"); doc.select(“格式”)分别得到不同类型的数据。具体格式如下表:
  以上是最基本的选择器语法,这些语法也可以组合起来使用,具体如表2所示:
  除了一些基本的语法以及这些语法进行组合外,Jsoup还支持使用表达式进行元素过滤选择,具体如表3所示:
  在Jsoup选择器的上述语法中,比较常用的还是根据html元素的id、class属性以及属性值等格式。在文档成功解析后,顺利的获取了想要的数据,这时可能会需要对某些元素进行修改,例如为链接地址增加属性、为图片增加可点击链接、修改文本内容等。Jsoup中也提供了相应的方法。例如:   除了无法修改标签名外,包括元素的属性和文本都可以修改。通过以上的介绍可以发现,Jsoup 使用跟 jQuery 一模一样的选择器对元素进行检索,操作非常简便,只需要一行代码即可完成。
  3 Jsoup的使用方法
  第一步:加载HTML页面,生成 Document 对象实例
  Jsoup提供了3种方式来加载html页面,它们分别为:
  1)根据给定的html格式的字符串加载文档
  2)根据给定的URL 地址加载文档
  3)根据本地html文件加载 文档
  因为 一般的HTML 文档中经常会出现链接、图片以及所引用的外部脚本、css 文件等内容, 在第三种加载文档方式中加入BaseURL 参数的目的就是當 HTML 文档使用相对路径方式引用外部文件时,Jsoup 会自动为这些 URL 加上一个BaseURL地址的前缀 。
  以上几种加载HTML文档的方法中,比较常用的是第二种方式。在制作百度新闻手机客户端时,不需要进行登录,也就不用在代码中设置cookie等参数,所以加载百度新闻HTML页面的代码可以这样设置:Document doc = Jsoup.connect("http://news.baidu.com/").timeout(3000) .get();,这里仅仅设置了连接超时为3秒。
  第二步:Jsoup解析HTML
  在IE浏览器中输入百度新闻网的地址http://news.baidu.com,通过查看该网页的源代码,发现部分html代码如下:
  从代码分析中可以看出,新闻列表都被存放在类名为hotnews下,所以获取新闻列表可以通过利用Jsoup选择器中的查找类名的方式完成,因此代码为:
  通过Jsoup解析html代码,得到用户想要的数据,另外可以采用Android中的WebView控件在手机中显示数据即可看到效果。
  4 总结
  本文详细介绍了Jsoup所具备的优势,以及它的使用方法,并简单介绍了如何使用Jsoup抓取百度新闻网的数据。由于 Jsoup 具有良好的可扩展性 API 设计,开发者通过Jsoup功能强大的选择器可以开发出非常强大的 HTML 解析功能,再加上 Jsoup 项目本身的开发也非常活跃,相信对于一些轻量级的Android应用开发,它绝对会是您的一位好帮手!
  参考文献:
  [1] jsoup[EB/OL]. http://jsoup.org/.
  [2] 曾伟辉, 李淼. 深层网络爬虫研究综述[J]. 计算机系统应用, 2008, 17(5).
  [3] Jonathan Hedley. Jsoup: Java HTML Parser[EB/OL]. http://jsoup.org/.
  [4] 余志龙, 郑名杰. Google.Android.SDK 开发范例大全[M]. 2版. 北京: 人民邮电出版社, 2010.
  [5] 墨菲, 李雪飞, 吴明晖. Android开发入门教程[M]. 北京: 人民邮电出版社, 2010.
其他文献
摘要:针对动力电池的智能充电问题,在常规开关电源的基础上,设计并实现了一种对动力电池按指定需求进行充电的智能设备。该设备利用STC12C2052AD单片机依据设定的输出期望值,通过对开关电源的实际输出值进行采样,并同输出期望值进行对比产生相应的反馈,从而智能化地控制开关电源的充电输出。实际验证结果表明,该设备能按照设定充电数据工作,且输出值误差在5%以内。  关键词:智能充电,开关电源,动力电池 
摘要:多维度教学模式要求学生从多角度、多因素地思考问题。不再满足于教师单向性的传授知识,而是学生自发的从多方面去探寻问题的解决办法,对知识的掌握也不再是停留在记忆层面,而是上升到应用和创新的领域。  关键词:网络教学;多维教学模式;平台;CAD  中图分类号:G424 文献标识码:A 文章编号:1009-3044(2015)12-0158-02  The Research and Practice
摘要:近几年来,地震一直在肆虐着我国位于地震带的地区,破化建筑物,造成人员伤亡,带来巨大的损失。为防止突发地震来临时发生非地震因素对师生的安全造成威胁,教育部要求学校组织学生进行紧急疏散训练。由于紧急疏散训练并不能提升学生面对地震时的心理素质和虚拟地震平台的高花费及其不真实性,所以并没有良好的成效。利用虚拟现实技术的地震逃生游戏能够提升受训者的心理素质并且具有一定的真实性,基于此,文章首先介绍了地
摘要:介绍了制作虚拟设备素材的方法以及制作电视机维修虚拟实验的动画技术。  关键词:Flash;虚拟实验;动画  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)12-2pppp-0c    Flash-based Production, "TV Maintenance Virtual Experiment" Animation Technology  PAN Biao
摘要:随着我国对宇航产品自主可控要求的不断提升,国产器件必将广泛应用于宇航电子产品中。该文以国产P1750处理器芯片的地面考核和在轨应用验证为基础,为国产处理器在轨可靠性应用提供了参考。  关键词:国产器件;P1750;应用验证  中图分类号:TP332 文献标识码:A 文章编号:1009-3044(2015)05-0268-01  PACE1750A系列CPU是一款基于美军标MIL-STD-17
摘要:水产养殖企业的水质好坏关系到水产动物的生活环境,直接影响了企业经济效益。通过无线传感器网络,实现水产养殖水质状况的实时监测。池塘各个检测点的传感器获取池塘的水温、溶氧值、酸碱度等参数;无线传感器网络各节点传感器采集到的数据经路由汇总,通过GPRS模块及时远传至监控中心;依据水质指标系统数据,从而制定相应的水质调节措施或自动启动相应设备调节水质,实现足不出户监测池塘的水质状况。  关键词: 无
摘要:随着时代不断的发展,信息技术是我们生活中最基本的技能之一。信息技术课程是为培养学生的信息素养,也是人们掌握信息技术的最基本最有效的途径。文章对凯里市区小学信息技术课程实施现状进行了调查,分析了信息技术课程在实施中存在的一些问题,并提出相应的对策和意见。  关键词:信息技术;民族地区;小学  中图分类号:G62 文献标识码:A 文章编号:1009-3044(2015)08-0151-03  A
统编语文教材阅读策略单元的编排是教材编写上的历史性突破。教材在小学三至六年级上册依次安排了“预测”“提问”“提高阅读速度”“有目的的阅读”四种阅读策略。本文以三年级预测策略单元为例,浅谈如何统整单元内容进行课程设计及实施。  一、单元编排思路新  单元目标一条线。阅读策略单元是统编教材的全新板块与内容,其不以双线结构的方式来编排,而是以预测、提问等某一种阅读策略为主线进行编排。单元核心目标凸显,可
摘要:随着中国经济飞度发展,同声传译的用武之地越来越明显,目前世界上有 98%的国际会议采用的都是同声传译的方式。同声传译是包括“听-理解-转换-表达”在内的复杂过程,要求译员有很高的文化素质,因此对同声传译实验室功能的要求越显重要。对同声传译实验室的分析描述是提出构建同声传译实验室必备的要求,三峡大学MTI同传实验室使用芬兰 SANAKO Lab 100系统,该系统是一套先进的语言学习平台,主要
摘要:网络的日益繁荣,对网络信息安全也提出了更高的要求。该文介绍了信息安全中最常见的安全攻击的表现,主要包括人为的恶意攻击以及计算机病毒攻击两个方面,面对这些威胁,从密码学中的重点加密技术与信息技术相结合的角度,详细阐述密码学在网络信息安全技术中的应用,及其解决当前网络信息安全所面临问题的具体机制,保障我们良好、健康的网络环境。  关键词:信息安全;密码学;属性基加密  中图分类号:TP393 文