热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CSDN博文下载器(JAVA)

自己用JAVA做的CSDN博文下载器,提供jar包和源码。源码也公开吧,反正jar反编译也能得到源码,新手不会jar加密。考虑到上课的时候看博客不方便,想把好的博客

自己用JAVA做的CSDN博文下载器,提供jar包和源码。

源码也公开吧,反正jar反编译也能得到源码,新手不会jar加密。


资源csdn在审核吧...好慢


考虑到上课的时候看博客不方便,想把好的博客全部下载下来,在手机上看。

各种百度,找到了几个工具。

1.http://blog.csdn.net/gzshun/article/details/7555525

大神写了思路和教程,用他的工具发现的问题:

(1)下载不完全,测试只能下载第一页的21篇文章左右。

(2)生成的pdf看着还行,代码部分有的超出pdf页面范围,导致看不到,不方便

2.http://www.cr173.com/soft/48129.html

这个大神写的通用博客导出工具,好像接口有变化,失效了,导出不了。


我就在琢磨自己写个程序出来。

好了,有了http://blog.csdn.net/gzshun/article/category/932960 前辈的思路。

扩展了一下,自己的思路:

(1)电脑版改为手机版

个人感觉手机版csdn更精简,处理起来肯定方便,链接是http://m.blog.csdn.net/blog,后面加用户名就是该用户的博客了,这里要区别用户名和自定义域名,电脑版的博客链接一般是自定义域名,例如:我的电脑版csdn博客自定义域名是:noaboutfengyue,我的用户名是:oWuGuanFengYue123,电脑版中http://blog.csdn.net/加这两个都可以跳转到博客,但是在手机版中只能访问 http://m.blog.csdn.net/blog/oWuGuanFengYue123打开博客。

为了使用方便,程序只需读入自定义域名就能下载,所以,增加个方法,功能是通过域名获得用户名,实现很简单,打开http://blog.csdn.net/noaboutfengyue,源码中就有oWuGuanFengYue123用户名,通过正则表达式解析就Ok。

(2)采用ITEXT从html生产pdf

在http://blog.csdn.net/noaboutfengyue/article/details/45174787中已经说明

(3)获取所有文章列表

经测试发现http://m.blog.csdn.net/blog/oWuGuanFengYue123?page= 这个page是文章页数,当这个数字很大时,大过文章页数,取个极限,99999,http://m.blog.csdn.net/blog/oWuGuanFengYue123?page=999999,显示的就是所有文章

(4)文章列表的获取和文章内容的解析

在(3)中获取的页面,通过正则表达式,解析出所有文章标题和url,然后通过这个url得到html源码,由于使用IText,对html源码的格式要求很严,所以这里要进行预处理(这里做的有点不完善),比如
报错,必须改成
,还有一些,然后直接转换成pdf输出。

(5)增加序号

为了使生成出来的pdf有序,按照作者第一篇博文开始编号。生成出来的文件名是  1.标题.pdf


思路大概就这些,细节方面有些要处理。

使用说明:

下载目录在当前程序目录/csdn/用户名


演示一下吧。

用http://m.blog.csdn.net/blog/lmj623565791 这个老师的来演示,博客写得很好。

技术分享


处理过程显示:

技术分享

还是有些地方处理的不完善,大致上处理还不错,能生成大部分pdf。

结果:

技术分享


就这样了,哈哈,世界清净了。

不说了,我去下载好的博客去了,上课了去看。


复制去Google翻译翻译结果

CSDN博文下载器(JAVA)


推荐阅读
  • 前端微服务二
    为了解决庞大的一整块后端服务带来的变更与扩展方面的限制,出现了微服务架构(Microservices):微服务是面向服务架构(SOA)的一种变体,把应用程序设计成一系列松耦合的细粒 ... [详细]
  • Java工作流引擎关于数据加密流程(MD5数据加密防篡改)
    关键字:驰骋工作流程快速开发平台工作流程管理系统工作流引擎asp.net工作流引擎java工作流引擎.开发者表单拖拽式表单工作流系统流程数据加密md5数据保密流程数据防篡改软加密适 ... [详细]
  • 九宫格计算. ... [详细]
  • Java开发框架!Alibaba高并发业务秒杀系统落地实战文档,砥砺前行!
    接口概述:接口是Java语言中的一种引用类型,是方法的集合,所以接口的内部主要就是定义方法,包含常量,抽象方法(JDK ... [详细]
  • 这一篇主要总结一下jQuery这个js在引入的时候做的一些初始化工作第一句window.undefinedwindow.undefined;是为了兼容低版本的IE而写的因为在低版本 ... [详细]
  • iOS之富文本
    之前做项目时遇到一个问题:使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结 ... [详细]
  • nvmw安装,用于控制node版本;
    之前一直使用的是nodev2.2.0版本,挺说新版本的node解决了npm安装插件产生文件夹结构过深的问题,所以就想更新试试;上网一看才发现,尼玛的node已经到了6.+版本了,好 ... [详细]
  • packagetest;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOE ... [详细]
  • 安全3AAuthentication:认证Authorzation:授权Accouting|Audition:审计用户管理用户:UID:0,不一定是root,root的uid非0时 ... [详细]
  • c语言自定义BOOL函数C语言没有BOOL类型变量boolean类型是C++所独有的由于使用BOOL类型可以使代码更具有可读性,很多编程者都在C中自己定义了类似的应用,一般方法有两 ... [详细]
  • 导读:很多朋友问到关于入门学什么php框架简单的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • 以SOA服务为导向的信息系统构建是通过有计划地构建信息系统时,一种简单而有柔性的方法,就是组件化与服务导向架构。过去的信息系统,是在使用者需要新功能时才开发的,也就是响应不同时 ... [详细]
  • 简单动态字符串redis里面很多地方都用到了字符串,我们知道redis是一个键值对存储的非关系型数据库,那么所有的key都是用字符串存储的,还有字符串类型,这些都是用字符串存储的 ... [详细]
  • java内存模型浅析_浅析Java内存模型
    在并发编程中,需要处理两个关键问题:线程之间如何通信以及线程之间如何同步。通信是指线程之间以何种机制来交换信息。同步是指程序中用于控制不同线程间操作发生 ... [详细]
  • 定义:定义两个数论函数\(f\)、\(g\)的Dirichlet卷积为:\[\left(f*g\right)\left(n\right)\sum_{d|n}f\left(d\rig ... [详细]
author-avatar
寒风中挣扎_427
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有