Jsoup的作用

当你想获得某网页的内容,可以使用此框架做个爬虫程序,爬某图片网站的图片(先获得图片地址,之后再借助其他工具下载图片)或者是小说网站的小说内容

我使用Jsoup写出的一款小说下载器,小说下载器

Jsoup导入

Jsoup官网

1. 使用gradle导入

compile 'org.jsoup:jsoup:1.11.1'

2. 第三方包导入

Jsoup使用

Jsoup中文文档

1. 获得Document

  • 本地html文件或者使用javaIO流,则使用静态方法parse方法

     Document document = Jsoup.parse("D:\\test.html");
  • 网址的话使用静态方法connect().get()

     Document document = Jsoup.connect("https://www.baidu.com").get();

2. 根据id找到某标签 document.getElementById

因为id是唯一的,所以找到唯一的一个Element

    Element element = document.getElementById("id名");

3. 根据class找到某标签 document.getElementsByClass

class可能不止一个,所以这里返回的是一个Elemnts数组

Elements elements = document.getElementsByClass("d_title").select("h1");

4. 获得标签的内容 element.text()

例如html文件中有段代码为

<a id="title">hello world</a>

获得a标签的内容的代码为

Element element = document.getElementById("title");
String s = element.text();

5. 获得标签的属性 element.attr()

有段代码如下:

<a id="main" href="www.baidu.com"></a>

获得a标签的链接地址

Element element = document.getElementById("main");
String url = element.attr
String s = element.text();

6. 选择固定标签(li,p,a等)element.select("a")

返回的是Elements数组

例如html文件中有段代码为

<div id="main"><a>hello world!</a></div>

获得a标签的内容代码为

Element element = document.getElementById("main");
Elements elements = element.select("a");
for(int i=0;i<elements.size();i++){String s = elements.get(i).text();
}

获取p标签不能换行

有段代码

<div id="main"><p>hello world</p><p>this is my name</p>
</div>  

我们由id找到了element,我们想要获得p标签的内容,怎么办呢?

刚开始我想的也是使用select方法来选择p标签,但是,没有其作用

正确的方法应该是使用element.text方法获得内容,但是获得的内容全是一行的(段落之间是用空格隔开的)

我们想要每个p标签的内容独占一行,怎么办呢?

我们直接把空格替换成\n即可

String string = element.text().replaceAll(" ","\n");

另外一种方法,如果感觉上面的方法不好用的话(有些小说原本就有些多余的空格),那么就使用下面的方法

Element element = document.getElementById("main");
String text = Jsoup.clean(element.html(), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));//保存p标签换行

上面的获得的内容还有&nbsp标志(html的空格标志),我们还得删除这个标志以及多余的空行

    /*** 处理空行和“&nbsp;”标志* @param input 内容* @return 处理过后的结果*/public static String deleteCRLFOnce(String input) {return input.replaceAll("((\r\n)|\n)[\\s\t ]*(\\1)+", "$1").replaceAll("&nbsp;", "");}

转载于:https://www.cnblogs.com/kexing/p/10373375.html

Java爬虫框架Jsoup学习记录相关推荐

  1. java爬虫框架jsoup

    1.java爬虫框架的api jsoup:https://www.open-open.com/jsoup/ 转载于:https://www.cnblogs.com/wuzaipei/p/1057266 ...

  2. Java爬虫框架之WebMagic的学习总结

    Java爬虫框架之WebMagic WebMagic 概述 特性 架构 四大组件 数据流转对象 控制爬虫运转的引擎Spider WebMagic的基本使用 添加WebMagic的核心与扩展依赖 爬虫实 ...

  3. java爬虫框架—WebMagic

    什么是网络爬虫 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满 ...

  4. SSM框架入门学习记录

    SSM框架入门学习记录 //项目结构 在这里插入图片描述 在这里插入图片描述 包名多种多样,命名习惯问题. 流程:Controller(接受请求)-->Service(biz)(bl)(写业务函 ...

  5. scrapy框架菜鸟学习记录

    scrapy框架菜鸟学习记录 scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.其可以应用在数据挖掘,信息处理或储存历史数据等一系列的程序中.其最初是为了页面抓取(更确切的说,网络抓 ...

  6. java爬虫框架之webMagic

    webMagic框架 前言 介绍 案例 控制类: 解析类: 持久化类: 用到的工具类以及配置类: 注意事项 后语 前言 文章仅供安全领域的朋友学习使用!! 严禁做违法违纪的事情,责任自负 介绍 Web ...

  7. Java爬虫框架wemgic_Java爬虫框架-WebMagic挖坑补坑指南

    以前总是用的Python下的Scrapy和crawley和PHP的小众爬虫框架,最近突然想到了何不用下Java下的框架试试? 查了下Java下的爬虫框架自然也不在少数,Nutch,WebMagic,W ...

  8. Java爬虫之JSoup使用教程

    title: Java爬虫之JSoup使用教程 date: 2018-12-24 8:00:00 +0800 update: 2018-12-24 8:00:00 +0800 author: me c ...

  9. java爬虫框架哪个好_java爬虫框架的使用

    原标题:java爬虫框架的使用 随着互联网的发展,编程程序语言也开始被越来越多的人所掌握,但是自始至终,java语言一直是被使用范围最广的编程语言.今天,武汉中软国际主要给大家讲解的是java语言中的 ...

  10. 什么是爬虫,常见的java爬虫框架有哪些?-蛙课网

    随着互联网的发展,编程程序语言也开始被越来越多的人所掌握,与此同时,java语言是使用范围最广的编程语言.今天我们一起了解一下什么是爬虫,java爬虫框架有哪些. 网络爬虫(又称为网页蜘蛛,网络机器人 ...

最新文章

  1. 学python工资高吗-现在Python就业薪资高吗?
  2. 完全图解RNN、RNN变体、Seq2Seq、Attention机制
  3. c++ fork 进程时 共享内存_因为没答好进程间通信,面试挂了...
  4. 数组对象根据某个属性取出重复的个数
  5. Java笔记-Spring Boot Webservice中对指定namespace及localpart进行拦截
  6. Docker上部署MySQLCluster(基于mysql/mysql-cluster镜像)
  7. 无法远程连接Oracle
  8. excel2016 android,新编Excel 2016应用大全(实战精华版)
  9. 2020高压电工模拟考试及高压电工模拟考试系统
  10. 红外遥控接收发射原理及ESP8266实现
  11. 猫眼api html,爬取猫眼电影数据(示例代码)
  12. 计算机load代表,什么是 Load ? 什么是 Load Average ?
  13. 半吊子 opencv学习笔记
  14. 【设计大赛】基于RT-Thread和RA6M4实现samba服务的移动网盘
  15. ad574 的c语言编程,AD574A参考程序
  16. Elasticsearch:Supervised Machine Learning - 有监督的机器学习
  17. 双屏计算机主机是什么,双屏显示器怎么连接(台式机连接步骤教程) - 双屏显示器怎么设置_双屏显示器怎么连接_双屏显示器有什么用(电脑)...
  18. 佛山科学技术学院计算机期末试题,高等数学 A佛山科学技术学院期终考试试题.doc...
  19. ipmitool 实时检测温度的脚本编写
  20. android 获取usb serialnumber,iOS9获取手机序列号serialNumber(UDID)

热门文章

  1. 线性表的顺序存储结构--数组(顺序表)、栈、队列
  2. springboot学习笔记2106版
  3. 熟练的运用计算机英语怎么说,对什么运用的熟练用英语怎么说?
  4. linux新建虚拟机到图形化界面
  5. 使用layui实现后台数据表格显示时的需要修改的地方(包括后台)
  6. mysql 查出数据后插入新建表
  7. elasticsearch同义词配置elasticsearch-analysis-dynamic-synonym
  8. js Date 日期函数
  9. RocketMQ Client 编码快速入门 与 可视化控制台
  10. Zabbix proxy配置