ps:一个从csdn迁移到hexo等静态博客的java程序

github:https://github.com/dataiyangu/csdn2hexo

我的个人博客:https://mmmmmm.me

博客源码:https://github.com/dataiyangu/dataiyangu.github.io

功能

概述:利用爬虫爬取指定用户的CSDN博客文章转为md格式,目的是完成博客迁移

爬取的方式:

   1 默认轮询从第一页开始往后
   2 专栏方式
   3 指定某篇文章
   4 指定页数
   5 分类

设置生成的md文件命名规则:

可选值:date title ,date根据日期命名,title根据文章名命名

设置md文件的头部信息

title=

author=

tags=

categories=

是否显示csdn中的锚点"文章目录"字样,以及下面具体的锚点 默认false(因为csdn中是集成了[toc]功能的,hexo并没有集成)

anchor=false

是否开启版权声明 默认false(csdn文章头部有我们自定的版权声明,false即为去掉。)

copyright=false

工具

html2markdown

Jsoup

提示

  • 运行过程中可能出现异常(小概率): 因为csdn有反爬虫机制,如果迁移过程中出现”应该是被反爬虫了,换个wifi或者网络试试~~~~~~~~~~~~~~~~~~~~~~~ “,那你就照着我打的这个日志去做吧,哈哈
  • 运行./start.sh 之前需要给这个脚本赋予权限,执行 chmod 777 ./start.shg
  • 需要jdk1.8

用法:

方式一:

git clone 到本地,进入target目录,修改config.properties中的某些配置(视自己情况而修改)

运行

java -jar csdn2hexo-1.0-SNAPSHOT.jar

方式二:

git clone 到本地,进入target目录,修改config.properties中的某些配置(视自己情况而修改)

运行 ./start.sh a,b,c 1,2,3 articleName tips:这里的a,b,c 是hexo标签,逗号隔开 1,2,3是hexo分类,逗号隔开 articleName是文章标题,不写的话默认标题是csdn的文章标题。这三个参数如果不写的话默认是配置文件中的内容

方式三:

git clone 到本地,通过idea import本project,

修改src/main/resource目录中的config.properties文件(视自己情况而修改)

修改读取配置文件的路径:找到com.github.csccoder.csdn2md.util.PropertiesUtil

package com.github.csccoder.csdn2md.util;

public class PropertiesUtil {
	public static String getProperties(String key){
		String value = null;
		try {
			Properties pp = new Properties();

			//通过idea运行程序
			InputStream inputStream = Main.class.getClassLoader().getResourceAsStream("config.properties");
			//通过java -jar 或者 ./start.sh运行程序
			//String filePath = System.getProperty("user.dir")+ "/config.properties";
			//InputStream inputStream = new BufferedInputStream(new FileInputStream(filePath));

			pp.load(inputStream);
			value= (String) pp.get(key);
			return value;
		} catch (IOException e) {
			e.printStackTrace();
			return value;
		}
	}
}

找到 Main 这个类运行即可

展示

运行命令:

文件夹产生

将文件夹中_posts和images文件中的内容拷贝到自己博客对应的位置

本地启动hexo博客测试

查看效果

查看头部信息

查看头部信息显示效果



配置文件信息展示

# md文章头部配置
#分类和标签逗号隔开
title=
author=Leesin.Dong
tags=a,b,c
categories=a,b,c

# 文件命名规则  可选值:date title ,date根据日期命名,title根据文章名命名
MdFileName_type=date

# csdn host 这里如果没有自定义域名的话不用改
csdn_host=https://blog.csdn.net
# csdn用户名
casn_name=dataiyangu

# 文件保存的绝对路径,即img html post这三个文件夹的父文件夹
file_Path=/Users/leesin/Desktop/hexo_blog_md
# 设置下载的文件夹名字
html_path=html
image_path=images
md_path=_posts

# 设置下载的方式,默认是从第一页往后不断的下载的
#可选的方式:
#       1 默认轮询从第一页开始往后
#       2 专栏方式
#       3 指定某篇文章
#       4 指定页数
#       5 分类
url_way=2
# 具体的五种抓取方法的地址填写(视自己情况而定)
# 比如 我的: https://blog.csdn.net/dataiyangu/article/category/8118370
# 下面的几种情况只写 https://blog.csdn.net/dataiyangu 后面的内容即可,后面写什么自己手动点到相应的页面粘贴过来就行了
url_way_1=/article/list/
url_way_2=/column/info/32118
url_way_3=/article/details/88525801
url_way_4=/article/list/2
url_way_5=/article/category/8118370

#是否显示csdn中的锚点"文章目录"字样,以及下面具体的锚点 默认false
anchor=false
#是否开启版权声明 默认false
copyright=false

利用爬虫爬取指定用户的CSDN博客文章转为md格式,目的是完成博客迁移博文到Hexo等静态博客的更多相关文章

  1. 微博API怎么爬取其它未授权用户的微博/怎么爬取指定用户公布的微博

    获取某个用户最新发表的微博列表:http://open.weibo.com/wiki/2/statuses/user_timeline 原接口已经被封.很多人都在问怎么获取指定用户的微博,于是写这篇B ...

  2. 利用爬虫爬取LOL官网上皮肤图片

    今天在浏览网页时,看到一篇很有意思的文章,关于网络爬虫的.该文章是讲述如何利用request爬取英雄联盟官网皮肤图片.看过文章后觉得挺有用的,把代码拿过来运行了一下,果真爬取成功.下面给大家分享一下代 ...

  3. 利用Python爬虫爬取指定天猫店铺全店商品信息

    本编博客是关于爬取天猫店铺中指定店铺的所有商品基础信息的爬虫,爬虫运行只需要输入相应店铺的域名名称即可,信息将以csv表格的形式保存,可以单店爬取也可以增加一个循环进行同时爬取. 源码展示 首先还是完 ...

  4. 一个简单的定向python爬虫爬取指定页面的jpg图片

    import requests as r import re resul=r.get("http://www.imooc.com/course/list") urlinfo=re. ...

  5. 利用python爬取海量疾病名称百度搜索词条目数的爬虫实现

    实验原因: 目前有一个医疗百科检索项目,该项目中对关键词进行检索后,返回的结果很多,可惜结果的排序很不好,影响用户体验.简单来说,搜索出来的所有符合疾病中,有可能是最不常见的疾病是排在第一个的,而最有 ...

  6. 利用Scrapy爬取所有知乎用户详细信息并存至MongoDB

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者 :崔庆才 本节分享一下爬取知乎用户所有用户信息的 Scrapy 爬虫实战. 本节目标 本节要实现的内容有 ...

  7. 利用Python网络爬虫爬取学校官网十条标题

    利用Python网络爬虫爬取学校官网十条标题 案例代码: # __author : "J" # date : 2018-03-06 # 导入需要用到的库文件 import urll ...

  8. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  9. Python爬虫之利用BeautifulSoup爬取豆瓣小说(一)——设置代理IP

    自己写了一个爬虫爬取豆瓣小说,后来为了应对请求不到数据,增加了请求的头部信息headers,为了应对豆瓣服务器的反爬虫机制:防止请求频率过快而造成“403 forbidden”,乃至封禁本机ip的情况 ...

随机推荐

  1. tar的具体参数和用法!

    tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...

  2. CJE-Jenkins认证工程师考试预约报名流程

    先决条件 考试费用150美元,需要由master/visr信用卡支付 考试全英文  哈哈哈 考试目的 通过各种渠道能够找到Jenkins的学习资料,并能够完成jenkins的配置管理,还是想全面的系统 ...

  3. oracle服务端导出/导入方式expdp/impdp

    1. expdp导出步骤 1.1 用sys管理员登录sqlplus [root@hxjk_test_mysql_redis_file oracle]# sqlplus SQL*Plus: Releas ...

  4. 泛微oa系统com.eweaver.base.DataAction文件sql参数sql注入

    URL/ServiceAction/com.eweaver.base.DataAction?sql=select%201,2,3,4,5,6,7,8,9,233%20from%20DUAL%20

  5. 跨域篇--JSONP原理

    一篇文章让你明白 jsonp原理详解 什么是JSONP? 先说说JSONP是怎么产生的: 其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,着用自 ...

  6. 前端,用js根据一个对象,去除另个对象中重复的元素

    这里的应用场景是,两个div盛放待选项目和已选项目,如下图 <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6"> < ...

  7. Educational Codeforces Round 60 (Rated for Div. 2) E. Decypher the String

    题目大意:这是一道交互题.给你一个长度为n的字符串,这个字符串是经过规则变换的,题目不告诉你变换规则,但是允许你提问3次:每次提问你给出一个长度为n的字符串,程序会返回按变换规则变换后的字符串,提问3 ...

  8. Codeforces 745E Hongcow Buys a Deck of Cards 状压DP / 模拟退火

    题意:现在有n张卡片(n <= 16), 每一轮你可以执行两种操作中的一种.1:获得一张红色令牌和一张蓝色令牌.2:购买一张卡片(如果可以买的话),购买的时候蓝色卡片可以充当蓝色令牌,红色同理, ...

  9. jieba分词单例模式及linux权限不够情况下tmp_dir自定义

    在linux环境下,没有root权限的情况下,有时会碰到如下问题: Building prefix dict from the default dictionary ... Loading model ...

  10. 了解跨站请求伪造CSRF

    参考以下两篇文章: https://www.cnblogs.com/Erik_Xu/p/5481441.html https://www.cnblogs.com/4littleProgrammer/p ...