java爬虫(二)- Jsoup
Jsoup
- jsoup 介绍
- 1,准备环境,导入所需依赖
- 2,获取网页第一个title标签的文本内容
- 3,jsoup解析字符串|文件
- 4,使用dom 方式遍历文档
- 5,使用选择器获取元素
- 6,select选择器组合使用
jsoup 介绍
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup的主要功能如下:
- 从一个URL,文件或字符串中解析HTML;
- 使用DOM或CSS选择器来查找、取出数据;
- 可操作HTML元素、属性、文本;( Jsoup一般用于解析爬到的数据并存储, 很少用到操作 )
1,准备环境,导入所需依赖
<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.13.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency>
2,获取网页第一个title标签的文本内容
// 解析Url地址 参数1:访问的url,参数2:访问的超时时间Document doc = Jsoup.parse(new URL("http://www.myqxin.com"), 1000);// 使用选择器,获取想要的内容String title = doc.getElementsByTag("title").first().text();System.out.println(title);
虽然使用Jsoup可以替代HttpClient直接发起请求解析数据,但是往往不会这样用,因为实际的开发过程中,需要使用到多线程,连接池,代理等等方式,而jsoup对这些的支持并不是很好,所以我们一般把jsoup仅仅作为Html解析工具使用
3,jsoup解析字符串|文件
// 使用工具类读取文件,获取字符串String context = FileUtils.readFileToString(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");// 解析字符串Document doc = Jsoup.parse(context);// 解析文件//Document doc = Jsoup.parse(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");String title = doc.getElementsByTag("title").first().text();System.out.println(title);
这里的set.html内容是自己测试用的内容,仅仅是为了演示,实际情况根据你们所接触到的页面而定
4,使用dom 方式遍历文档
元素获取
1,根据id查询元素 getElementById
2,根据标签获取元素 getElementsByTag
3,根据class获取元素 getElementsByClass
4,根据属性获取元素 getElementsByAttribute
// 解析文件,获取doc对象Document doc = Jsoup.parse(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");// 1,根据id查询元素 getElementByIdElement element1 = doc.getElementById("people");// 2,根据标签获取元素 getElementsByTagElement element2 = doc.getElementsByTag("span").first();// 3,根据class获取元素 getElementsByClassElement element3 = doc.getElementsByClass("").first();// 4,根据属性获取元素 getElementsByAttributeElement element4 = doc.getElementsByAttribute("").last();// 根据属性和属性值获取Element element5 = doc.getElementsByAttributeValue("abc","123").last();
元素中的数据获取
1,从元素中获取id
2,从元素中获取className
3,从元素中获取属性的值 attr
4,从元素中获取所有属性 attributes
5,从元素中获取文本内容 text
// 解析文件,获取doc对象Document doc = Jsoup.parse(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");// 1,根据id查询元素 getElementByIdElement element = doc.getElementById("people");// 1,从元素中获取idString str1 = element.id();// 2,从元素中获取classNameString str2 = element.className();// 3,从元素中获取属性的值 attrString str3 = element.attr("id");// 4,从元素中获取所有属性 attributesAttributes str4 = element.attributes();// 5,从元素中获取文本内容 textString str5 = element.text();
5,使用选择器获取元素
selector选择器概述
tagname:通过标签查找元素,比如:span
#id:通过ID查找元素,比如:#myqxin
.class:通过class名称查找元素,比如:class_a
[attribute]:利用属性查找元素,比如:[abc]
[attr=value]:利用属性值查询元素,比如:[class=s_name]
// 解析文件,获取doc对象Document doc = Jsoup.parse(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");// tagname:通过标签查找元素,比如:spanElements spans = doc.select("span");// #id:通过ID查找元素,比如:#myqxinElement first = doc.select("#myqxin").first();// .class:通过class名称查找元素,比如:class_aElement last = doc.select(".class_a").last();// [attribute]:利用属性查找元素,比如:[abc]Elements select = doc.select("[abc]");// [attr=value]:利用属性值查询元素,比如:[class=s_name]Elements elements1 = doc.select("[class=s_name]");Elements elements2 = doc.select("[id=myqxin]");
6,select选择器组合使用
el#id:元素+ID,比如:h3#myqxin
el.class:元素+class,比如:li.class_a
el[attr]:元素+属性名,比如:span[abc]
任意组合:比如:span[abc].s_name
ancestor child:查找某个元素下子元素,比如:.city_con li 查询“city_con”下的所有li
parent > child:查找某个父元素下的直接子元素,比如.city_con > ul > li 查找city_con 第一级(直接子元素)的 ul,再找所有ul 下的第一级li
parent > * :查找某个父元素下所有直接子元素
// 解析文件,获取doc对象Document doc = Jsoup.parse(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");// el#id:元素+ID,比如:h3#myqxinElements select1 = doc.select("h3#myqxin");// el.class:元素+class,比如:li.class_aElements select2 = doc.select("li.class_a");// el[attr]:元素+属性名,比如:span[abc]Elements select3 = doc.select("span[abc]");// 任意组合:比如:span[abc].s_nameElements select4 = doc.select("span[abc].s_name");// ancestor child:查找某个元素下子元素,比如:.city_con li 查询“city_con”下的所有liElements select5 = doc.select(".city_con li");// parent > child:查找某个父元素下的直接子元素,比如.city_con > ul > li 查找city_con 第一级(直接子元素)的 ul,再找所有ul 下的第一级liElements select6 = doc.select(".city_con > ul > li");// parent > * :查找某个父元素下所有直接子元素Elements select7 = doc.select(".city_con > *");
java爬虫(二)- Jsoup相关推荐
- Java爬虫之JSoup使用教程
title: Java爬虫之JSoup使用教程 date: 2018-12-24 8:00:00 +0800 update: 2018-12-24 8:00:00 +0800 author: me c ...
- Java 爬虫工具Jsoup解析
Jsoup是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和 ...
- java爬虫框架jsoup
1.java爬虫框架的api jsoup:https://www.open-open.com/jsoup/ 转载于:https://www.cnblogs.com/wuzaipei/p/1057266 ...
- java爬虫利器Jsoup的使用
对于长期使用java做编程的程序猿应该知道,java支持的爬虫框架还是有很多的,如:ebMagic.Spider.Jsoup等.今天我们就用Jsoup来实现一个小小的爬虫程序,Jsoup作为kava的 ...
- java爬虫之Jsoup入门
网络爬虫 网络爬虫概念 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁. ...
- JAVA爬虫案例——JSOUP爬取图片并使用v-viewer实现图片预览
前言 网络爬虫是大数据时代收集数据的一种有效手段,合理合法的运用技术手段获取网络数据,实现数据的再利用也是程序员的一项重要技能.本节我们使用java环境下的jsoup实现网络数据的爬取,主要是图片数据 ...
- 【java爬虫】jsoup爬取网页数据-搜索算法评测/竞品评测
百度抽奖概率改4个小时频繁黑屏频繁弹出源码的前端FE T8李森:请云端高level的同学参加会议...对,我级别到了... 666666 业务背景:如何保证搜索算法的好坏?所以有了竞品评测,自己的AP ...
- 【Java爬虫】Jsoup
官网 中文使用手册 jsoup.jar官网下载 jsoup.jar百度网盘下载 提取码:g6ek jsoup是一款Java的HTML解析器,主要用来对HTML解析,可直接解析某个URL地址.HTML文 ...
- Java爬虫之jsoup的使用
背景 获取所有双色球数据,但是返回的都是html页面,需要进行处理,最开始想着用dom4j处理,发现不可行.之后想着自己处理,但是又太麻烦了,然后找到了jsoup,使用起来非常简单. jsoup的作用 ...
- Java爬虫(二)-- httpClient模拟Http请求+jsoup页面解析
博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye 写博客 发Chat 传资源 登录注册 原 Java爬虫(二)-- httpClient ...
最新文章
- 南京晓庄学院大一第二学期计算机数据结构期末考试试卷及答案,南京晓庄学院数据结构题库参考答案.docx...
- 未解决计算机主机与打印机,电脑无法与打印机连接 计算机网考题目2(12)
- java string.join找不到_Java String join()用法及代码示例
- ICCV 2019丨基于跨视角信息融合的三维人体姿态估计
- android屏幕亮度权限,安卓支持将屏幕亮度设为0的方法。
- 【机器学习基础】正规方程法(Normal equation)(正则化和非正则化)——吴恩达课程笔记
- 关于ECMWF和ERA5没有近地面相对湿度数据的解决办法
- 【CV细粒度识别论文总结】The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification
- ASCII码的转换应用:
- PDF文档用什么软件打开?
- 前端上传图片到七牛云
- Win10自带的备份工具备份系统
- whose引导的定语从句,先行词是复数形式,从句里谓语动词用单数还是复数?
- ODT在手,DDR5布线可以任性走?
- java判断文件夹中的图片是否重复
- landsat8与sentinel2波段对比
- Unity5权威讲解之菜鸟读书笔记(一)
- 启xin宝app的token算法破解——逆向篇(二)
- Python_RuntimeError问题的解决
- 【Linux】循序渐进学运维-服务篇-与tomcat相关的概念
热门文章
- Dynamics AX2012 SSRS报表添加功能(通用)
- 软件设计工程——数据库设计
- 鼠标屏幕取词技术的原理和实现 (转)
- Ubuntu16.04安装teamver14.1.3
- 软件测试常问面试题--计算机网络相关
- 查看python的模块和函数帮助文档方法
- Java常见的8种数据结构
- CVPR2020-深度图超分辨率DSR新方法| Channel Attention based Iterative Residual Learning for Depth Map SR
- 用户名 不在 sudoers 文件中。此事将被报告。
- 神经网络在游戏中的应用,神经网络控制应用实例