Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yansheng836/jsoup-crawl-csdn

:spider_web:用jsoup爬取csdn博客的一些信息。
https://github.com/yansheng836/jsoup-crawl-csdn

csdnspider java jsoup spider

Last synced: about 2 months ago
JSON representation

:spider_web:用jsoup爬取csdn博客的一些信息。

Awesome Lists containing this project

README

        

# JSoup-Crawl-CSDN

利用 [jsoup](https://github.com/jhy/jsoup) (一款Java的HTML解析器)爬取CSDN博客的一些信息。

这里主要是爬取博客图片url,然后下载在本地,用于备份博客中的图片。

---

## Table of Contents

* [初衷](#%E5%88%9D%E8%A1%B7)
* [主要内容](#%E4%B8%BB%E8%A6%81%E5%86%85%E5%AE%B9)
* [特别需要注意的问题](#%E7%89%B9%E5%88%AB%E9%9C%80%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9A%84%E9%97%AE%E9%A2%98)
* [1\.保存图片方面](#1%E4%BF%9D%E5%AD%98%E5%9B%BE%E7%89%87%E6%96%B9%E9%9D%A2)
* [2\.csdn博客的编辑器问题](#2csdn%E5%8D%9A%E5%AE%A2%E7%9A%84%E7%BC%96%E8%BE%91%E5%99%A8%E9%97%AE%E9%A2%98)
* [构建环境](#%E6%9E%84%E5%BB%BA%E7%8E%AF%E5%A2%83)
* [使用](#%E4%BD%BF%E7%94%A8)
* [声明](#%E5%A3%B0%E6%98%8E)

---

## 初衷

逛CSDN时,总会发现有些博客因为年代比较久远,而造成博客图片的丢失,阅读博客的体验极差;因为嵌入的图片中可能包含一些和内容联系比较紧密的信息,图片丢失会使博客断断续续、不易理解。

于是我突然想将csdn博客中的图片下载下来,然后进行备份:保存到本地、上传百度云、上传图床等,然后这个项目就诞生了。

## 主要内容

1. 获得博客数量。
2. 获得博客列表页数。
3. 获得博客列表信息(网址,创建时间,标题),如:

```
Blog [url=https://blog.csdn.net/weixin_41287260/article/details/92185040, createTime=2019-06-15 20:45:43, title=阿里巴巴主导的“华山版《Java 开发手册》”简介]
```

4. 获得博客的图片链接。
5. 下载博客的所有图片,进行备份,防止博客中的图片丢失。

## 特别需要注意的问题

### 1.保存图片方面

1. 如果创建文件夹失败,直接continue,不再继续下载图片,因为保存路径错误,不可能保存成功,故继续执行没有意义!
2. 替换文件名字符串中的特殊字符,使其能够成功创建文件夹:
`windows下文件名中不能含有:\ / : * ? " < > | 英文的这些字符 ,这里使用"."、"'"进行替换。`
3. 对特殊的图片的超链接进行裁剪(如链接中含有一个'?',或者多个'?')。
4. 对于图片名太长的字符串进行裁剪,保留其后面的17位(不包含后缀名);对没有后缀名的图片,为其添加".jpg"后缀,注意这里并没有改变图片格式,仅仅是简单的重命名。打个比方:如果原图片是动图,你修改文件名为jpg后,它还是动图。
5. 之前保存图片时,检测到以“时间+博客”命名的文件夹存在就直接跳过该重循环(continue),即不再下载该篇博客的图片;但是考虑到后期可能会对之前的博客进行修改,可能会添加图片。所以改用检测图片是否存在(即文件夹存在不再跳过该重循环),如果图片存在就不再下载(在函数中直接return)。

### 2.csdn博客的编辑器问题

csdn的编辑器有两种富文本编辑器和markdown编辑器,而这种编辑器生成的文章的HTML标签是不同的,至少图片的标签是不同的,如下所示:

| 类型 | 文章标识 | 图片标签 | 选择器 |
| -------- | -------- | -------- | ------ |
| 富文本 | `

` | `` | `select("img.has")` |
| markdown | `
` | `` | `select("img")` |

所以在查找博客中的图片时,使用的选择器会有所不同,具体可参考我的博客:

## 构建环境

jdk1.8+,maven3.0+,myeclipse2017

```xml


org.jsoup
jsoup
1.12.1

```

注:如果不使用maven框架进行构建,直接下载项目中的`jsoup-1.12.1.jar`或者到 下载jar包,然后加到类路径中。

## 使用
1. git clone https://github.com/yansheng836/jsoup-crawl-csdn.git
2. 以maven形式导入(my)eclipse。
3. 运行`\jsoup-crawl-csdn\src\main\java\xyz\yansheng\main`下面的测试程序。
4. 或者按需开发自己的程序,例如:获取文章信息……

## 声明

- 本项目仅用于学习交流使用,**禁止**进行商业目的的开发、发布、运营等。数据所有权归所有。