Java爬虫框架Jsoup学习记录
Jsoup的作用
当你想获得某网页的内容,可以使用此框架做个爬虫程序,爬某图片网站的图片(先获得图片地址,之后再借助其他工具下载图片)或者是小说网站的小说内容
我使用Jsoup写出的一款小说下载器,小说下载器
Jsoup导入
1. 使用gradle导入
compile 'org.jsoup:jsoup:1.11.1'
2. 第三方包导入
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标签换行
上面的获得的内容还有 
标志(html的空格标志),我们还得删除这个标志以及多余的空行
/**
* 处理空行和“ ”标志
* @param input 内容
* @return 处理过后的结果
*/
public static String deleteCRLFOnce(String input) {
return input.replaceAll("((\r\n)|\n)[\\s\t ]*(\\1)+", "$1").replaceAll(" ", "");
}
Java爬虫框架Jsoup学习记录的更多相关文章
- java爬虫框架jsoup
1.java爬虫框架的api jsoup:https://www.open-open.com/jsoup/
- java爬虫框架webmagic学习(一)
1. 爬虫的分类:分布式和单机 分布式主要就是apache的nutch框架,java实现,依赖hadoop运行,学习难度高,一般只用来做搜索引擎开发. java单机的框架有:webmagic和webc ...
- Java爬虫框架之WebMagic
一.介绍 WebMagic是一个简单灵活的Java爬虫框架.基于WebMagic,你可以快速开发出一个高效.易维护的爬虫. 二.如何学习 1.查看官网 官网地址为:http://webmagic.io ...
- JAVA 爬虫框架webmagic 初步使用Demo
一想到做爬虫大家第一个想到的语言一定是python,毕竟python比方便,而且最近也非常的火爆,但是python有一个全局锁的概念新能有瓶颈,所以用java还是比较牛逼的, webmagic 官网 ...
- Java爬虫框架调研
Python中大的爬虫框架有scrapy(风格类似django),pyspider(国产python爬虫框架). 除了Python,Java中也有许多爬虫框架. nutch apache下的开源爬虫程 ...
- Java爬虫框架 | 爬小说
Jsoup,Java爬虫解决方案,中文文档:jsoup 不得不说Java的生态真的好,原来我以为爬虫是只能用Pyhton来写的,结果发现Java的爬虫框架不要太多…… 一分钟你就可以写 ...
- Java爬虫框架WebMagic——入门(爬取列表类网站文章)
初学爬虫,WebMagic作为一个Java开发的爬虫框架很容易上手,下面就通过一个简单的小例子来看一下. WebMagic框架简介 WebMagic框架包含四个组件,PageProcessor.Sch ...
- java爬虫中jsoup的使用
jsoup可以用来解析HTML的内容,其功能非常强大,它可以向javascript那样直接从网页中提取有用的信息 例如1: 从html字符串中解析数据 //直接从字符串中获取 public stati ...
- Java爬虫框架WebMagic入门——爬取列表类网站文章
初学爬虫,WebMagic作为一个Java开发的爬虫框架很容易上手,下面就通过一个简单的小例子来看一下. WebMagic框架简介 WebMagic框架包含四个组件,PageProcessor.Sch ...
随机推荐
- PMP:6.项目进度管理
项目管理包括为项目管理项目按时完成所需的各个过程:
- iOS 计算所有标注的经纬度范围 来确定地图显示区域
1.计算所有点的经纬度范围 //向点聚合管理类中添加标注 _imageDataArr是存放经纬度标注数组 for (NSInteger i = 0; i < _imageDataArr.coun ...
- [转] KVM虚拟化技术生态环境介绍
KVM虚拟化技术生态环境介绍 http://xanpeng.github.io/wiki/virt/kvm-virtulization-echosystem-intro.html kvm和qemu/q ...
- TDD:什么是桩(stub)和模拟(mock)?
背景 本文假设你对TDD.Stub和Mock已经有了初步的认识,本文简单解释一下stub和mock的区别和使用场景,先看看他们之间的关系: 由上图可以知道mock框架可以非常容易的开发stub和moc ...
- Vipe框架构思记
准备着手写一个JAVA框架,基于公司目前的框架提取出来.当然公司现在的框架也是我搭建的.在这整理一下思路. 框架名称:Vipe AOP,IOC容器:Spring MVC:Spring MVC ORM: ...
- PMS权限管理和鉴权过程
一.权限的管理基础知识 1.系统的权限机制分为:权限解析.权限分配.鉴权.动态添加权限 2.PermissionInfo : PackageParser.Permission中包含一个对应的Perm ...
- Javascript高级编程学习笔记(49)—— DOM2和DOM3(1)DOM变化
DOM变化 我们知道DOM有许多的版本,其中DOM0和DOM2这两个级别以对事件的纳入标准而为人所知 但是呢,这里不讲事件,在后面会有专门和事件有关的部分作为详细讲解 这里就只讲一下DOM2和DOM3 ...
- 微信小程序-form表单-获取用户输入文本框的值
微信小程序-form表单-获取用户输入文本框的值 <input name='formnickname' class="textarea" placeholder=" ...
- 使用yeoman搭建脚手架并发布到npm
前言 最近主要在写前端的模板类项目,由于其中的webpack配置和引进数据注入ejs模板的方法大同小异,所以萌发出把该模板框架提取出来作为一个常用的脚手架,也方便以后同事可以进行复用. 之前在看< ...
- 卷积神经网络CNN的原理(一)---基本概念
什么是卷积神经网络呢?这个的确是比较难搞懂的概念,特别是一听到神经网络,大家脑海中第一个就会想到复杂的生物学,让人不寒而栗,那么复杂啊.卷积神经网络是做什么用的呢?它到底是一个什么东东呢? 卷积神经网 ...