建立自己的csdn知识管理库(1)

王朝delphi·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

建立自己的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多万的帖子了 :)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航