[分享]CSDN博客导出工具ex

弱水垂钓 2015-04-17 02:01:25
加精
先发布在路人乙e版本基础上进行扩展后可正常下载CSDN博客、专栏的源代码:
http://download.csdn.net/detail/kevin_zcwen/8604007
再发一下Release工具:
http://download.csdn.net/detail/kevin_zcwen/8604031

借鉴的路人乙e版本源代码
http://download.csdn.net/source/4578205

修改说明:
1. 只是调整了csdn博客内容识别的正则

#region former regular expression
/*Regex reg_con = new Regex(@"<div id=""article_content"" class=""article_content"">([\s\S]+)</div>\s*<div class=""share_buttons"" id=""sharePanel"">", RegexOptions.IgnoreCase | RegexOptions.Compiled);
* */
#endregion

#region using regular expression
Regex reg_con = new Regex(@"<div id=""article_content"" class=""article_content"">[\r\n ]*([\s\S]+)</div>[\r\n ]*[\s\S]+[\r\n ]*<div class=""bdsharebuttonbox""", RegexOptions.IgnoreCase | RegexOptions.Compiled );
#endregion



只测试导出PDF格式,有几点缺陷:
1. 下载频繁时会出现操作超时的网络错误(目前使用过程体验还可以)
2. 导出的PDF按博客页面显示的先后顺序组织内容,未进行博客顺序的调整
3. 未添加导出的终止功能

对此工具想添加的功能:
1. 批量导出博客,可由固定格式文件保存要导出的博客地址、博主用户名等

最后发布一些上午变态的御"虫"(博客导出):
见百度云盘共享,可能资源都偏C/C++:
http://yun.baidu.com/s/1dDAinxn
...全文
1998 51 打赏 收藏 转发到动态 举报
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
弱水垂钓 2015-05-14
  • 打赏
  • 举报
回复
你没有安装visual studio
林飞的梦呓 2015-05-12
  • 打赏
  • 举报
回复
具体怎么操作呢?打不开呀!能不能指导下呢?
wuyuzhong2 2015-04-21
  • 打赏
  • 举报
回复
学习了啊
弱水垂钓 2015-04-20
  • 打赏
  • 举报
回复
引用 40 楼 accessysq 的回复:
[quote=引用 38 楼 kevin_zcwen 的回复:] 最新Release下载地址 http://download.csdn.net/detail/kevin_zcwen/8611203
压缩文件有问题,无法解压,下载了几次都一样。[/quote] 我压缩是使用的7z,我刚下载后进行解压都正常 可能是你使用的压缩软件并不支持7z吧
  • 打赏
  • 举报
回复
引用 38 楼 kevin_zcwen 的回复:
最新Release下载地址 http://download.csdn.net/detail/kevin_zcwen/8611203
压缩文件有问题,无法解压,下载了几次都一样。
弱水垂钓 2015-04-20
  • 打赏
  • 举报
回复
弱水垂钓 2015-04-20
  • 打赏
  • 举报
回复
弱水垂钓 2015-04-20
  • 打赏
  • 举报
回复
引用 36 楼 wmxcn2000 的回复:
[quote=引用 35 楼 kevin_zcwen 的回复:] [quote=引用 27 楼 wmxcn2000 的回复:] [quote=引用 25 楼 kevin_zcwen 的回复:] [quote=引用 19 楼 wmxcn2000 的回复:] 导不全,只是导出了一部分文章, LZ 有时间查一下。
说下导出不全的博主用户名,有时间我测试下[/quote] DBA_Huangzj,我只是随手一测,找了个大版的版主。[/quote] 大版置顶的帖子非常多,原来帖子的正则缺少验证置顶的样式 在34楼已经贴上修改的代码[/quote] good job 。[/quote] 谢谢
卖水果的net 2015-04-20
  • 打赏
  • 举报
回复
引用 35 楼 kevin_zcwen 的回复:
[quote=引用 27 楼 wmxcn2000 的回复:] [quote=引用 25 楼 kevin_zcwen 的回复:] [quote=引用 19 楼 wmxcn2000 的回复:] 导不全,只是导出了一部分文章, LZ 有时间查一下。
说下导出不全的博主用户名,有时间我测试下[/quote] DBA_Huangzj,我只是随手一测,找了个大版的版主。[/quote] 大版置顶的帖子非常多,原来帖子的正则缺少验证置顶的样式 在34楼已经贴上修改的代码[/quote] good job 。
弱水垂钓 2015-04-20
  • 打赏
  • 举报
回复
引用 27 楼 wmxcn2000 的回复:
[quote=引用 25 楼 kevin_zcwen 的回复:] [quote=引用 19 楼 wmxcn2000 的回复:] 导不全,只是导出了一部分文章, LZ 有时间查一下。
说下导出不全的博主用户名,有时间我测试下[/quote] DBA_Huangzj,我只是随手一测,找了个大版的版主。[/quote] 大版置顶的帖子非常多,原来帖子的正则缺少验证置顶的样式 在34楼已经贴上修改的代码
弱水垂钓 2015-04-20
  • 打赏
  • 举报
回复

//添加成员变量 正则定义
Regex reg_title_top = new Regex(@"<span class=""link_title""><a href=""(.+?)"">[\r\n\t ]*<font color=""red"">\[置顶\]</font>([^<]+?)</a></span>", RegexOptions.IgnoreCase | RegexOptions.Compiled);

修改方法实现如下:
public IList<FeedEntity> GetList()
        {
            var list = new List<FeedEntity>();

            int p = 0;
            for (int i = 1; i < 1000; i++)
            {
                if (p > 0 && i > p) break;
                web.URL = string.Format(url, i);
                string html = web.Get();
                if (p == 0)
                {
                    var mp = Regex.Match(html, @"共(\d+)页");
                    if (mp.Success) p = App.ToInt(mp.Groups[1].Value);
                    else p = 1;
                }

                //not top 
                var mats = reg_title.Matches(html);
                if (mats.Count == 0) break;
                foreach (Match mat in mats)
                {
                    var fd = new FeedEntity();

                    fd.Url = (_csdnBasicBlogUrl.EndsWith("/") ? (_csdnBasicBlogUrl.Substring(0, _csdnBasicBlogUrl.Length - 1)) : _csdnBasicBlogUrl) + mat.Groups[1].Value;

                    fd.Title = mat.Groups[2].Value.Trim();

                    list.Add(fd);
                }

                mats = reg_title_top.Matches(html);
                if (mats.Count == 0) break;
                foreach (Match mat in mats)
                {
                    var fd = new FeedEntity();

                    fd.Url = (_csdnBasicBlogUrl.EndsWith("/") ? (_csdnBasicBlogUrl.Substring(0, _csdnBasicBlogUrl.Length - 1)) : _csdnBasicBlogUrl) + mat.Groups[1].Value;

                    fd.Title = mat.Groups[2].Value.Trim();

                    list.Add(fd);
                }

            }
           
            //反转LIST
            list.Reverse();

            return list;
        }
cattpon 2015-04-20
  • 打赏
  • 举报
回复
learning~
cattpon 2015-04-20
  • 打赏
  • 举报
回复
learning~
  • 打赏
  • 举报
回复
SIMYOU.TTF 这个我没有,建议还是使用比较常规的字体吧。
  • 打赏
  • 举报
回复
pdf导出显示列表后点确定,窗体闪了一下关闭,时间太快,我没看清楚提示什么。整个应用程序直接关闭了。
引用 43 楼 kevin_zcwen 的回复:
[quote=引用 42 楼 accessysq 的回复:] 导出chm部分乱码,无法导出pdf。
导出chm需要有一个软件支持,在源代码里有相关检查 pdf导出失败?有什么提示?

//方法中有一个取字体的方法
        private BaseFont CreateChineseFont()
        {
            BaseFont.AddToResourceSearch("iTextAsian.dll");
            BaseFont.AddToResourceSearch("iTextAsianCmaps.dll"); //"STSong-Light", "UniGB-UCS2-H", 
            //BaseFont baseFT = BaseFont.CreateFont("STSong-Light", BaseFont.EMBEDDED);
            BaseFont baseFT = BaseFont.CreateFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            //BaseFont.CreateFont()

            return baseFT;
        }
        //这个方法直接取本机TTF字体库了,不知道你机器中有没有这个
[/quote]
弱水垂钓 2015-04-20
  • 打赏
  • 举报
回复
引用 42 楼 accessysq 的回复:
导出chm部分乱码,无法导出pdf。
导出chm需要有一个软件支持,在源代码里有相关检查 pdf导出失败?有什么提示?

//方法中有一个取字体的方法
        private BaseFont CreateChineseFont()
        {
            BaseFont.AddToResourceSearch("iTextAsian.dll");
            BaseFont.AddToResourceSearch("iTextAsianCmaps.dll"); //"STSong-Light", "UniGB-UCS2-H", 
            //BaseFont baseFT = BaseFont.CreateFont("STSong-Light", BaseFont.EMBEDDED);
            BaseFont baseFT = BaseFont.CreateFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            //BaseFont.CreateFont()

            return baseFT;
        }
        //这个方法直接取本机TTF字体库了,不知道你机器中有没有这个
  • 打赏
  • 举报
回复
导出chm部分乱码,无法导出pdf。
qnapjiujiu 2015-04-19
  • 打赏
  • 举报
回复
cattpon 2015-04-18
  • 打赏
  • 举报
回复
感谢分享~~~
qq_27503971 2015-04-18
  • 打赏
  • 举报
回复
的书法大师法
加载更多回复(27)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧