建立自己的csdn知识管理库
2006-02-04 14:43:16 来源:WEB开发网建立自己的csdn知识管理库(1)
csdn是这两年我上来频率最高的论坛,以前喜欢到大富翁。但是很多时候上来是为了搜索以前的帖子,解决在项目开发中的一些实际问题,搜获不小。但是也有一个遗憾,就是csdn有时候访问速度非常的慢,而且也没有提供官方的离线浏览器。所以就萌生的写一个下载csdn帖子的软件。然后把从csdn接收到的帖子放在自己的知识管理系统里面,或者做成chm 这样效率就高多了。
再仔细一看 发觉csdn上面的所有帖子都是保存为xml的。这些就更方便了,下载下来后就可以放在数据库里面。或者做成html文件。
http://community.csdn.net/Expert/TopicView1.asp?id=
后面循环加上一个7位数的数字就可以得到一个帖子。
例如:http://community.csdn.net/Expert/TopicView1.asp?id=2800001
多线程 循环就搞定. 为了以后访问的速度, 可以1000条就建立一个目录 ,也就是一个目录只保存1000条。
开始用.net写的一个winform,软件 发觉速度下载有点慢。后来改为delphi.部分代码如下:
PRocedure TForm1.SavePage(strId: string; strDir: string);
begin
try
UrlDownloadToFile(nil, Pchar(Edit1.text+ strId), Pchar(strDir), 0, nil); //保存ur连接到一个文本文件
except
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
strDir: string;
intStar:integer;
intEnd:integer;
i:integer;
FileName:string;
begin
try
intStar:=strToInt(edit2.Text);
intEnd:=strToint(edit3.text);
Edit4.Text:=Copy(IntTostr(intStar),0,4);
strDir:='E:\CSDNBBS\'+Edit4.Text ;
createDir(strDir);
dddd:=true;
for i:=intStar to intEnd do
begin
if(i mod 1000)=0 then
begin
Edit4.Text:=Copy(IntTostr(i),0,4);
strDir:='E:\CSDNBBS\'+Edit4.Text ;
createDir(strDir);
end;
self.Refresh;
if dddd =false then
break;
application.ProcessMessages;
try
FileName := strDir+'\' +IntTostr(i) + '.xml';
SavePage(IntTostr(i), FileName);
Edit2.text:=IntTostr(i);
except
end;
end;
except
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
dddd:=false;
end;
注意: 在uses里面加入:urlmon;
我已经下载了100多万的帖子了 :)
- ››自己写的一个php基于phpQuery的通用采集类
- ››建立唯美图片特效,十个jQuery插件分享
- ››自己动手写iPhone wap浏览器之界面架构篇
- ››建立自己的TextView和ImageView的组合View类
- ››自己也能DIY个性真人QQ表情
- ››自己动手!巧法让酷狗动感歌词更完美
- ››自己编译Google Android内核的Linux源码
- ››自己写的一个jquery模板引擎(json比较好用)
- ››自己定义Android堆内存大小
- ››建立虚拟专用网 使用SSH保护网络通信
- ››自己动手制作伪原创程序 分为八个步骤
- ››建立一个 Derby 日历,第 3 部分: 使用事务和锁定...
更多精彩
赞助商链接