因某需求,需要使用java从网页上爬取一些数据来使用,花了点时间看了一下JSoup,简单介绍一下

jsoup is a Java library for working with real-world HTML. It provides a very convenient API for extracting and manipulating data, using the best of DOM, CSS, and jquery-like methods.  Java HTML Parser官网

译:jsoup是一个用于处理实际HTML的Java库。它提供了一个非常方便的API来提取和操作数据,使用最好的DOM、CSS和类jquery方法。

简单来说就是可以使用这个jsoup库根据HTML标签元素来定位你想要的数据,下面直接切入主题学习使用JSoup.

一、导入所需jar包

本文写作时使用的maven文件,如需下载jar包,文低引用2中有相关下载链接

<dependency><!-- jsoup HTML parser library @ https://jsoup.org/ --><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.12.1</version>
</dependency>

二、main测试

1.读取超链接URL(本文测试这一种方式,欲使用他方式请参考引用3),简单点,就去访问百度的首页面

        try {//首先,通过工具类连接上URLDocument doc = Jsoup.connect("https://www.baidu.com/").get();//通过文档获取标题信息String title = doc.title();System.out.println(title);} catch (IOException e) {e.printStackTrace();}

打印内容:

百度一下, 你就知道

2.获取<a>标签的URL及文本

        try {Document doc = Jsoup.connect("https://www.baidu.com/").get();/*获取URL的链接*/Elements links = doc.select("a[href]");for (Element link : links) {System.out.println("link : " + link.attr("href"));System.out.println("text : " + link.text());}} catch (IOException e) {e.printStackTrace();}

打印内容(部分):

text : 百度首页
link : javascript:;
text : 设置
link : https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F&sms=5
text : 登录
link : http://news.baidu.com
text : 新闻
link : https://www.hao123.com

3.获取URL的元信息

        try {Document doc = Jsoup.connect("https://www.baidu.com/").get();/*获取URL的元信息*///查询metab标签的第一个name属性值为referrer的属性为content的值String keywords = doc.select("meta[name=referrer]").first().attr("content");System.out.println("Meta keyword : " + keywords);String description = doc.select("meta[name=theme-color]").get(0).attr("content");System.out.println("Meta description : " + description);} catch (IOException e) {e.printStackTrace();}

打印结果:

Meta keyword : always
            Meta description : #2932e1

4.获取URL的图像信息

        try {Document doc = Jsoup.connect("https://www.baidu.com/").get();/*获取URL的图像*/Elements images = doc.select("img[src~=(?i)\\.(png|jpe?g|gif)]");for (Element image : images) {System.out.println("src : " + image.attr("src"));System.out.println("height : " + image.attr("height"));System.out.println("width : " + image.attr("width"));System.out.println("alt : " + image.attr("alt"));}} catch (IOException e) {e.printStackTrace();}

打印结果(部分):

src : //www.baidu.com/img/baidu_jgylogo3.gif
       height : 
       width : 
       alt : 到百度首页
       src : //www.baidu.com/img/baidu_resultlogo@2.png
       height : 
       width : 
       alt : 到百度首页

5.获取表单参数

        try {Document doc = Jsoup.connect("https://www.baidu.com/").get();/*获取表单参数*///首先通过ID定位指定标签Element loginform = doc.getElementById("form");//获取标签input因是通过标签获取,所以它是一个复数集合Elements inputElements = loginform.getElementsByTag("input");//遍历集合获取每一个input标签中的属性值(根据此法可定位自己想要的数据)for (Element inputElement : inputElements) {String key = inputElement.attr("name");String value = inputElement.attr("value");System.out.println("Param name: "+key+" \nParam value: "+value);}} catch (IOException e) {e.printStackTrace();}

打印结果(部分):

Param name: rsv_pq 
   Param value: 935e81bd0003a4fa
   Param name: rsv_t 
   Param value: 995c4PHOYhjruVrvWzHXHuwlKcndZzriFTV+H6ELp2VaJNhvTjAP9/aule8
   Param name: rqlang 
   Param value: cn

实战测试

某网站获取近十年的河南高考分数线   http://www.gaokao.com/henan/fsx/

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;import java.io.IOException;/*** Created with CosmosRay** @author CosmosRay* @date 2019/6/24* Function:*/
public class MyJSoup {public static void main(String[] args) {try {Document doc = Jsoup.connect("http://www.gaokao.com/henan/fsx/").get();Element element = doc.getElementsByTag("table").first();Elements titls = element.getElementsByTag("tr");boolean flag = false;for (Element titl : titls) {if(!flag) {Elements ths = titl.getElementsByTag("th");for (Element element1 : ths) {String s = element1.text();System.out.print(s + "  ");}System.out.println();flag = true;}else {Elements ths = titl.getElementsByTag("td");for (Element element1 : ths) {String s = element1.text();System.out.print(s + "  ");}System.out.println();}}} catch (IOException e) {e.printStackTrace();}}
}

打印结果:

2018  2017  2016  2015  2014  2013  2012  2011  2010  2009  
一本  547  516  517  513  536  519  557  562  532  552  
二本  436  389  458  455  483  465  509  515  489  510  
专科  200  180  183  180  200  -  360  393  397  417

引用:1.Java HTML Parser    2. jsoup Cookbook(中文版)       3.易百教程

基于JSoup库的java爬虫开发学习——小步快跑相关推荐

  1. 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor

    [Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...

  2. 【Java Web开发学习】Spring4条件化的bean

    [Java Web开发学习]Spring4条件化的bean 转载:https://www.cnblogs.com/yangchongxing/p/9071960.html Spring4引入了@Con ...

  3. java springmvc https_【Java Web开发学习】Spring MVC 使用HTTP信息转换器

    [Java Web开发学习]Spring MVC 使用HTTP信息转换器 @ResponseBody和@RequestBody是启用消息转换的一种简洁和强大方式 消息转换(message conver ...

  4. Android 基于JSoup实现的小说爬虫

    Android 基于JSoup实现的小说爬虫 平时无聊有时候看看小说,虽然说手机上的小说App很多,但是免费的多半有广告,没广告的多半都要会员,网页上面看又太麻烦,那么如何去自己从网上爬取需要的小说信 ...

  5. 基于SQLServer ,使用Java Web开发的学生信息管理系统,在校大学生和新手可参考学习

    目的 ①了解使用数据库创建和表的创建. ②了解使用数据的添加和增删改查等SQL语句. ③理解数据库的表之间的关系处理. ④构建良好安全的后台数据管理系统. 二 设备及材料 一台装有SQL Server ...

  6. 基于Stripes框架进行Java Web开发

    Mark Eagle是美国乔治亚州亚特兰大市MATRIX Resources有限公司的一位资深软件工程师,拥有Sun公司的SCP和SCWCD认证.Mark本人非常喜欢使用开源软件进行软件开发,并且多次 ...

  7. Java后端开发学习路线

    前言 最近春招开始了,很多校招同学想从事Java开发的工作,但是不是很了解这里可以把我之前的学习路线分享一下.有困难的同学私聊加群,一起学习备战春招. 基本大纲 上述这些,简单的说一下都有哪些重点和资 ...

  8. Java程序开发学习之入门

    Java程序开发之入门学习 (学习参考书:Java大学实用教程第三版) Java应用程序开发的三个步骤:(1)编写源文件 (2)编译源文件生成的字节码 (3)加载运行字节码 一,编写源文件 (1)源文 ...

  9. 【实验室培训】大学生的Java后端开发学习之路(从App开发讲起)

    文章目录 前言 一.浅谈如何开发一款App 1.一个好的idea 2.根据这个idea完善好具体的需求 3.分工合作 4.设计阶段 ①UI设计 ②接口设计 ③架构设计 5.开发阶段 6.测试阶段 7. ...

最新文章

  1. 1.3 使用jmeter进行http接口测试
  2. _00021 尼娜抹微笑伊拉克_谁的的最离奇的异常第二阶段 Jedis pool.returnResource(jedis)...
  3. NSNotificationCenter
  4. 【渝粤题库】国家开放大学2021春1009离散数学(本)题目
  5. gdb调试多进程程序
  6. 手把手教你用Python实现查找算法
  7. C++递归或非递归实现n的阶乘
  8. KMP算法 C#实现 字符串查找简单实现
  9. 调查问卷Html5发展综述
  10. 图形绘制——pygame之旅
  11. (一)UDPSocket 服务端编写(超详细)
  12. cad一直正在加载_cad一直加载打不开怎么办,cad打不开的四种解决办法
  13. WIN10开启Hyper-V虚拟化功能
  14. 电流探头的主要指标及应用场合
  15. uniapp 压缩图片(微信小程序)
  16. PHP连接数据库——身份验证问题
  17. 计算机网络正常无法打开网页,电脑网络正常但是网页无法打开怎么样解决
  18. 齐岳研发可聚合性基团的小分子稀土配合物Eu(TTA)2phen
  19. java 分页简单使用
  20. 【新书】崛起的超级智能:互联网大脑如何影响科技未来

热门文章

  1. SoapUI调试接口(wsdl)
  2. 用计算机最炫民族风乐谱,最炫民族风简谱
  3. springboot配置多个数据源(两种方式)
  4. Windows下企业微信机器人定时发送消息
  5. 【线性代数】5-2:置换和余因子(Permutations and Cofactors)
  6. manjaro配置arch源_manjaro 切换国内源及软件安装
  7. oss上传报错_oss上传400报错-问答-阿里云开发者社区-阿里云
  8. CSS样式属性(一)
  9. 计算机网络题库---选择题刷题训练(100多道精品)
  10. 移动端网页防止手机缩放: