DELPHI读取网页源文件和获取字符串
(转)说到网页采集,通常大家以为到网上偷数据,然后把到收集到的数据挂到自己网上去。其实也可以将采集到的数据做为公司的参考,或把收集的数据跟自己公司的业务做对比等。
目前网页采集多为3P代码为多(3P即ASP、PHP 、JSP)。用得最有代表的就动易科技公司BBS中新闻采集系统,和网上流传的新浪新闻采集系统等都是用ASP程序来使用,但速度从理论上来说不是很好。如果尝试用其它软件的多线程采集是不是更快?答案是肯定的。用DELPHI、VC、VB、JB都可以,PB似乎比较不好做。以下用DELPHI来解释采集网页数据。
一、 简单的新闻采集
新闻采集是最简单的,只要识别标题、副题、作者、出处、日期、新闻主体、分页就可以了。在采集之前肯定要取得网页的内容,所以在DELPHI里加入idHTTP控件(在indy Clients面板),然后用idHTTP1.GET 方法取得网页的内容,声明如下:
function Get(AURL: string): string; overload;
AURL参数,是string类型,指定一个URL地址字符串。函数返回也是string类型,返回网页的HTML源文件。比如我们可以这样调用:
tmpStr:= idHTTP1.Get(‘http://www.163.com’);
调用成功后,tmpstr变量里存储的就是网易主页的代码了。
接下来,讲一下数据的截取,这里,我定义了这么一个函数:
function TForm1.GetStr(StrSource,StrBegin,StrEnd:string):string;
var
in_star,in_end:integer;
begin
in_star:=AnsiPos(strbegin,strsource)+length(strbegin);
in_end:=AnsiPos(strend,strsource);
result:=copy(strsource,in_sta,in_end-in_star);
end;
StrSource:string类型,表示HTML源文件。
StrBegin:string类型,表示截取开始的标记。
StrEnd:string,表示截取结束的标记。
函数返回字符串StrSource中从StrSource到StrBegin之间的一段文本。
比如:
strtmp:=TForm1.GetStr(‘A123BCD’,‘A’,‘BC’);
运行后,strtmp的值为:’123’。
关于函数里用到的AnsiPos和copy,都是系统定义的,可以从delphi的帮助文件里找到相关说明,我在这里也简单罗嗦一下:
function AnsiPos(const Substr, S: string): Integer
返回Substr在S中第一次出现的位置。
function copy(strsource,in_sta,in_end-in_star): string;
返回字符串strsource中,从in_sta(整型数据)开始到in_end-in_star(整型数据)结束的字符串。
有了以上函数,我�
相关文档:
有时需要使用透明控件用于捕获鼠标消息
1.调用Windows2000,xp新的API函数实现这一功能的过程。使用SetLayeredWindowAttributes
2.直接设置控件的alphablend,alphablendvalue,间接调用上述api.
3.使用TStaticText控件
procedure WMCtrlColor(var Message: TWMCtlColor); message WM_CTLCOLOR;
procedure TForm3.WMCtr ......
名称 类型 说明
abort 函数 引起放弃的意外处理
abs 函数 绝对值函数
addexitproc 函数 将一过程添加到运行时库的结束过程表中
addr 函数 返回指定对象的地址
adjustlinebreaks 函数 将给定字符串的行分隔符调整为cr/lf序列
align 属 ......
一、类和对象
类是对象的类型,是创建对象的模板。一个类可以创建多个对象,而一个对象总是属于某个类。类具有内部的属性(状态)和行为(操作)。
对象是类的实例,具有区别于同类其他对象的属性集合。
对象的声明存放于堆栈,对象的引用存放于堆。
二、类的方法分类
1、 普通方法
不加任何修饰� ......
savetime2k@yahoo.com 2004.1.28
http://savetime.delphibbs.com
今天开始学习元件编辑器,感觉比属性编辑器简单许多,但还是遇到了一些疑问。如果你能解答文中记录的问题,请告诉我答案,谢谢!
目 录
===============================================================================
⊙ TBaseComponentEdit ......
制作圆角矩形的窗体:
01.procedure TPortForm.FormCreate(Sender: Tobject);
02.var hr :thandle;
03.begin
04.hr:=createroundrectrgn(0,0,width,height,20,20);
05.setwindowrgn(handle,hr,true);
06.end;
如果不要窗体外框,则使用:
01.procedure TPortForm.FormCreate(Sender: Tobject);
02.var hr :thandl ......