基于JSoup库的java爬虫开发学习——小步快跑
因某需求,需要使用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爬虫开发学习——小步快跑相关推荐
- 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor
[Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...
- 【Java Web开发学习】Spring4条件化的bean
[Java Web开发学习]Spring4条件化的bean 转载:https://www.cnblogs.com/yangchongxing/p/9071960.html Spring4引入了@Con ...
- java springmvc https_【Java Web开发学习】Spring MVC 使用HTTP信息转换器
[Java Web开发学习]Spring MVC 使用HTTP信息转换器 @ResponseBody和@RequestBody是启用消息转换的一种简洁和强大方式 消息转换(message conver ...
- Android 基于JSoup实现的小说爬虫
Android 基于JSoup实现的小说爬虫 平时无聊有时候看看小说,虽然说手机上的小说App很多,但是免费的多半有广告,没广告的多半都要会员,网页上面看又太麻烦,那么如何去自己从网上爬取需要的小说信 ...
- 基于SQLServer ,使用Java Web开发的学生信息管理系统,在校大学生和新手可参考学习
目的 ①了解使用数据库创建和表的创建. ②了解使用数据的添加和增删改查等SQL语句. ③理解数据库的表之间的关系处理. ④构建良好安全的后台数据管理系统. 二 设备及材料 一台装有SQL Server ...
- 基于Stripes框架进行Java Web开发
Mark Eagle是美国乔治亚州亚特兰大市MATRIX Resources有限公司的一位资深软件工程师,拥有Sun公司的SCP和SCWCD认证.Mark本人非常喜欢使用开源软件进行软件开发,并且多次 ...
- Java后端开发学习路线
前言 最近春招开始了,很多校招同学想从事Java开发的工作,但是不是很了解这里可以把我之前的学习路线分享一下.有困难的同学私聊加群,一起学习备战春招. 基本大纲 上述这些,简单的说一下都有哪些重点和资 ...
- Java程序开发学习之入门
Java程序开发之入门学习 (学习参考书:Java大学实用教程第三版) Java应用程序开发的三个步骤:(1)编写源文件 (2)编译源文件生成的字节码 (3)加载运行字节码 一,编写源文件 (1)源文 ...
- 【实验室培训】大学生的Java后端开发学习之路(从App开发讲起)
文章目录 前言 一.浅谈如何开发一款App 1.一个好的idea 2.根据这个idea完善好具体的需求 3.分工合作 4.设计阶段 ①UI设计 ②接口设计 ③架构设计 5.开发阶段 6.测试阶段 7. ...
最新文章
- 1.3 使用jmeter进行http接口测试
- _00021 尼娜抹微笑伊拉克_谁的的最离奇的异常第二阶段 Jedis pool.returnResource(jedis)...
- NSNotificationCenter
- 【渝粤题库】国家开放大学2021春1009离散数学(本)题目
- gdb调试多进程程序
- 手把手教你用Python实现查找算法
- C++递归或非递归实现n的阶乘
- KMP算法 C#实现 字符串查找简单实现
- 调查问卷Html5发展综述
- 图形绘制——pygame之旅
- (一)UDPSocket 服务端编写(超详细)
- cad一直正在加载_cad一直加载打不开怎么办,cad打不开的四种解决办法
- WIN10开启Hyper-V虚拟化功能
- 电流探头的主要指标及应用场合
- uniapp 压缩图片(微信小程序)
- PHP连接数据库——身份验证问题
- 计算机网络正常无法打开网页,电脑网络正常但是网页无法打开怎么样解决
- 齐岳研发可聚合性基团的小分子稀土配合物Eu(TTA)2phen
- java 分页简单使用
- 【新书】崛起的超级智能:互联网大脑如何影响科技未来