高分求助:如何保存网站信息?(200)

  • 主题发起人 主题发起人 dywapple
  • 开始时间 开始时间
D

dywapple

Unregistered / Unconfirmed
GUEST, unregistred user!
我想写一个程序用来抓取某个网站上的含有特定关键字的信息,现在有两个问题:1、如何依次访问某个网站下所有可以访问的网页2、如何将网页上的图片去掉,将文字保存为txt文件
 
用两个COM组件即可以实现你的目的,获取网页信息用MSXML.XMLHTTP组件,对网页信息进行字符处理用正则表达式组件VBScript.RegExp,这些东西原来在我的BLOG里都有的,可惜我的BLOG没有续费被停掉了。获取网页信息示列var LoadHttp:Olevariant;begin LoadHttp:=CreateOleObject('MSXML2.XMLHTTP'); LoadHttp.open('GET','http://www.163.net',false); LoadHttp.send; Showmessage(PWideString(LoadHttp.responseText)); //这里省去了类型转换end;下面是正则表达式的列子procedure TForm1.Button1Click(Sender: TObject);var Matches, MyTest: OleVariant; NewTestStr, TestStr: string; i: integer;begin TestStr := '网址:http://www.ainlife.cn/ 电话:0728-4576983'; MyTest := CreateOleObject('VBScript.RegExp'); MyTest.Global := True; MyTest.IgnoreCase := True; MyTest.Pattern := '[/d]{3,4}-[/d]{6,11}'; //匹配一个电话号码 if MyTest.Test(TestStr) then ShowMessage('找到了电话号码'); Matches := MyTest.Execute(TestStr); //执行查找; for i := 1 to Matches.count do //显示找到的结果 begin ShowMessage(Format('找到的第%d个:%s', [i, Matches.item[i - 1]])) end; NewTestStr := MyTest.Replace(TestStr, '0769-85787641'); ShowMessage(NewTestStr);end;
 
十分感谢。
 
下面还有个列子,专用来从网页中找联接的var LoadHttp,Matches, MyRegExp: OleVariant; NewHttpText, HttpText: string; i: integer;begin //读取目标网站信息 LoadHttp:=CreateOleObject('MSXML2.XMLHTTP'); LoadHttp.open('GET','http://www.taomail.com.cn/',false); LoadHttp.send; HttpText := LoadHttp.responseText; //将读取的信息进行分析处理 MyRegExp := CreateOleObject('VBScript.RegExp'); MyRegExp.Global := True; MyRegExp.IgnoreCase := False; MyRegExp.Pattern := '(href[.''"//s/w]{0,}=[''"]{0,})([.//w:?/=/%/&/#/-]{0,})';//正则表达式规则请参考相关文档 Matches := MyRegExp.Execute(HttpText); //显示找到的结果 if MyRegExp.Test(HttpText) then begin ShowMessage('找到了联接'); for i := 1 to Matches.Count-50 do begin ShowMessage(Format('找到的第%d个:%s', [i,Matches.item[i - 1].SubMatches[1]] )); end; end else ShowMessage('没有找到');end;以上代码需引用ComObj单元
 
后退
顶部