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;", "");
}

Java爬虫框架Jsoup学习记录的更多相关文章

  1. java爬虫框架jsoup

    1.java爬虫框架的api jsoup:https://www.open-open.com/jsoup/

  2. java爬虫框架webmagic学习(一)

    1. 爬虫的分类:分布式和单机 分布式主要就是apache的nutch框架,java实现,依赖hadoop运行,学习难度高,一般只用来做搜索引擎开发. java单机的框架有:webmagic和webc ...

  3. Java爬虫框架之WebMagic

    一.介绍 WebMagic是一个简单灵活的Java爬虫框架.基于WebMagic,你可以快速开发出一个高效.易维护的爬虫. 二.如何学习 1.查看官网 官网地址为:http://webmagic.io ...

  4. JAVA 爬虫框架webmagic 初步使用Demo

    一想到做爬虫大家第一个想到的语言一定是python,毕竟python比方便,而且最近也非常的火爆,但是python有一个全局锁的概念新能有瓶颈,所以用java还是比较牛逼的, webmagic 官网 ...

  5. Java爬虫框架调研

    Python中大的爬虫框架有scrapy(风格类似django),pyspider(国产python爬虫框架). 除了Python,Java中也有许多爬虫框架. nutch apache下的开源爬虫程 ...

  6. Java爬虫框架 | 爬小说

    Jsoup,Java爬虫解决方案,中文文档:jsoup   不得不说Java的生态真的好,原来我以为爬虫是只能用Pyhton来写的,结果发现Java的爬虫框架不要太多……       一分钟你就可以写 ...

  7. Java爬虫框架WebMagic——入门(爬取列表类网站文章)

    初学爬虫,WebMagic作为一个Java开发的爬虫框架很容易上手,下面就通过一个简单的小例子来看一下. WebMagic框架简介 WebMagic框架包含四个组件,PageProcessor.Sch ...

  8. java爬虫中jsoup的使用

    jsoup可以用来解析HTML的内容,其功能非常强大,它可以向javascript那样直接从网页中提取有用的信息 例如1: 从html字符串中解析数据 //直接从字符串中获取 public stati ...

  9. Java爬虫框架WebMagic入门——爬取列表类网站文章

    初学爬虫,WebMagic作为一个Java开发的爬虫框架很容易上手,下面就通过一个简单的小例子来看一下. WebMagic框架简介 WebMagic框架包含四个组件,PageProcessor.Sch ...

随机推荐

  1. Dubbo 源码分析 - 自适应拓展原理

    1.原理 我在上一篇文章中分析了 Dubbo 的 SPI 机制,Dubbo SPI 是 Dubbo 框架的核心.Dubbo 中的很多拓展都是通过 SPI 机制进行加载的,比如 Protocol.Clu ...

  2. java基础知识-笔记整理

    1.查看已安装jdk文件路径 CMD输入java -verbose.   2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...

  3. web安全Wargame—Natas解题思路(1-26)

    前言: Natas是一个教授服务器端Web安全基础知识的 wargame,通过在每一关寻找Web安全漏洞,来获取通往下一关的秘钥,适合新手入门Web安全. 传送门~ 接下来给大家分享一下,1-20题的 ...

  4. 《http权威指南》读书笔记8

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  5. mouseover和mouseenter,mouseout和mouseleave的区别-引发的探索

    相信小伙伴们都用过鼠标事件,比如mouseover和mouseout,mouseenter和mouseleave.它们都分别表示鼠标移入移出. 在使用的过程中,其实一直有个小疑问——它们之间究竟有什么 ...

  6. C#连接mysql数据库的一个例子和获取本机IP的方法

    本例子是一个最初级直接连接mysql数据库的例子,实现了往数据库插入数据的操作: string MyConnectionMysql="Server=localhost;Datbase=xxx ...

  7. JVM和GC垃圾回收机制和内存分配

    JVM运行期间 线程共享 线程私有 线程共享: 方法区 堆方法区:存放可以共享数据,静态常量,类的共有方法属性字段等,可以共享的存在方法区. 堆:存放class对象 . 线程私有:本地方法栈 虚拟机栈 ...

  8. STL::sort函数实现

    声明:本文参考链接:STL::sort实现. 排序是面试中经常被问及的算法基础知识点,虽然实际应用中不会直接使用,但是理解这些简单的算法知识对于更复杂更实用的算法有一定的帮助,毕竟面试总不能问的太过深 ...

  9. 使用 WRK 压力测试工具对 ASP.NET Core 的接口进行压力测试

    0. 简要介绍 WRK 是一款轻量且易用的 HTTP 压力测试工具,通过该工具我们可以方便地对我们所开发的 WebAPI 项目进行压力测试,并且针对测试的情况返回结果. PS:Wrk 并不能针对测试的 ...

  10. 课程五(Sequence Models),第二 周(Natural Language Processing & Word Embeddings) —— 0.Practice questions:Natural Language Processing & Word Embeddings

    [解释] The dimension of word vectors is usually smaller than the size of the vocabulary. Most common s ...