1.jsoup介绍

很多时候,我们需要从各种网页上面抓取数据,而jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup官方文档:https://jsoup.org/cookbook/
2.使用场景
下面是一张关于美食的截图,可以留意到这是一个html网页,当我们想要抓取里面的数据的时候,jsoup就能帮到我们很多。
接下来开始手把手教学
首先,也是很重要的一步,就是下载jar包,丢到libs里面
jar包下载地址:http://jsoup.org/download
Android studio玩家可以不下载jar包,在Gradle里面加入
dependencies {
compile 'org.jsoup:jsoup:1.9.2'
}
然后,找到你心仪的网页去抓取数据
这里我们我继续使用美食的网页,然后右键查看网页源码,或者按F12,接下来可以看到一大堆标签:
找到需要的,例如上图这个 “美食天下” ,可以看到 “美食天下” 是放在以 <div class="top-bar" id="J_top_bar"> 为节点的 <a title="美食天下" 中,要获取这个“美食天下”,代码可以这样写:
try {
//从一个URL加载一个Document对象。
Document doc = Jsoup.connect("http://home.meishichina.com/show-top-type-recipe.html").get();
//选择“美食天下”所在节点
Elements elements = doc.select("div.top-bar");
//打印 <a>标签里面的title
Log.i("mytag",elements.select("a").attr("title"));
}catch(Exception e) {
Log.i("mytag", e.toString());
}
接下来看一下打印出来的结果:
Jsoup.connect(String url)方法从一个URL加载一个Document对象。如果从该URL获取HTML时发生错误,便会抛出 IOException,应适当处理。
一旦拥有了一个Document,你就可以使用Document中适当的方法或它父类 Element和Node中的方法来取得相关数据。
public class Element extends Node public class Document extends Element
很多文章都是说一大堆原理然后放出一个简单的例子,就跟我上面简单的打了一个log一样,然后发现用起来的时候是没那么简单的。为了大家能不看文档也可以直接使用(并且看不懂那一大堆标签也可以用),我决定再举一个例子(其实也就是比上面多打几个log):
下图红色框框是我们要获取的数据,可以看到他们对应的节点就是蓝色圆圈里面的<div class="xxx">
废话不多说上代码
try {
//还是一样先从一个URL加载一个Document对象。
Document doc = Jsoup.connect("http://home.meishichina.com/show-top-type-recipe.html").get();
//“椒麻鸡”和它对应的图片都在<div class="pic">中
Elements titleAndPic = doc.select("div.pic");
//使用Element.select(String selector)查找元素,使用Node.attr(String key)方法取得一个属性的值
Log.i("mytag", "title:" + titleAndPic.get(1).select("a").attr("title") + "pic:" + titleAndPic.get(1).select("a").select("img").attr("data-src"));
//所需链接在<div class="detail">中的<a>标签里面
Elements url = doc.select("div.detail").select("a");
Log.i("mytag", "url:" + url.get(i).attr("href"));
//原料在<p class="subcontent">中
Elements burden = doc.select("p.subcontent");
//对于一个元素中的文本,可以使用Element.text()方法
Log.i("mytag", "burden:" + burden.get(1).text());
}catch(Exception e) {
Log.i("mytag", e.toString());
}
大功告成,接下来看看log
没有问题!那么教学可以结束了!
注意:
Jsoup.connect(String url)方法不能运行在主线程,否则会报NetworkOnMainThreadException
最后上一张应用在项目的效果图:
有没有发现熟悉的椒麻鸡?很酷炫有木有!
小结
整堂课分几步:
1.下载jar包并丢到libs(或者在gradle)
2.找到心仪的网页
3.用Jsoup.connect()获取网页的document
4.查看网页源码,对准你想要的地方,给他来一个Element.select(String selector)
5.用Node.attr(String key)或者Element.text()方法把数据抽出来
6.没有6了就是这么简单!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# jsoup解析html
# Android使用jsoup解析html
# 安卓jsoup解析html
# Jsoup解析html实现招聘信息查询功能
# Android开发之利用jsoup解析HTML页面的方法
# Android使用Jsoup解析Html表格的方法
# Java中使用开源库JSoup解析HTML文件实例
# crawler4j抓取页面使用jsoup解析html时的解决方法
# Jsoup解析HTML实例及文档方法详解
# 可以看到
# 加载
# 可以使用
# 会报
# 方法来
# 几个
# 文档
# 放在
# 都在
# 你就
# 就能
# 下载地址
# 可以用
# 不多
# 打了
# 右键
# 所需
# 这是一个
# 很重要
# 来看看
相关文章:
公司门户网站制作流程,华为官网怎么做?
网站专业制作公司有哪些,做一个公司网站要多少钱?
开心动漫网站制作软件下载,十分开心动画为何停播?
制作旅游网站html,怎样注册旅游网站?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何在腾讯云服务器上快速搭建个人网站?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何通过VPS建站实现广告与增值服务盈利?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
如何在建站宝盒中设置产品搜索功能?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何选择高效响应式自助建站源码系统?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
,怎么用自己头像做动态表情包?
建站之星安装提示数据库无法连接如何解决?
建站之星后台密码遗忘?如何快速找回?
建站DNS解析失败?如何正确配置域名服务器?
已有域名如何快速搭建专属网站?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
建站VPS推荐:2025年高性能服务器配置指南
怀化网站制作公司,怀化新生儿上户网上办理流程?
如何在阿里云ECS服务器部署织梦CMS网站?
如何构建满足综合性能需求的优质建站方案?
建站168自助建站系统:快速模板定制与SEO优化指南
制作网站怎么制作,*游戏网站怎么搭建?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
如何选择服务器才能高效搭建专属网站?
建站三合一如何选?哪家性价比更高?
建站主机选购指南:核心配置与性价比推荐解析
网站按钮制作软件,如何实现网页中按钮的自动点击?
测试制作网站有哪些,测试性取向的权威测试或者网站?
如何在阿里云完成域名注册与建站?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
建站之星收费标准详解:套餐费用及年费价格表一览
python的本地网站制作,如何创建本地站点?
如何在腾讯云服务器快速搭建个人网站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
建站主机是什么?如何选择适合的建站主机?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
,石家庄四十八中学官网?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
已有域名和空间如何快速搭建网站?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
Android使用GridView实现日历的简单功能
如何选择建站程序?包含哪些必备功能与类型?
*请认真填写需求信息,我们会在24小时内与您取得联系。