java爬虫jsoup_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文件中有段代码为

hello world

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

Element element = document.getElementById("title");

String s = element.text();

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

有段代码如下:

获得a标签的链接地址

Element element = document.getElementById("main");

String url = element.attr

String s = element.text();

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

返回的是Elements数组

例如html文件中有段代码为

hello world!

获得a标签的内容代码为

Element element = document.getElementById("main");

Elements elements = element.select("a");

for(int i=0;i

String s = elements.get(i).text();

}

获取p标签不能换行

有段代码

hello world

this is my name

我们由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的空格标志),我们还得删除这个标志以及多余的空行

/**

* 处理空行和“ ”标志

* @param input 内容

* @return 处理过后的结果

*/

public static String deleteCRLFOnce(String input) {

return input.replaceAll("((rn)|n)[\st ]*(\1)+", "$1").replaceAll(" ", "");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值