如何过滤出html文件中的所有链接和其说明文字?(我的办法--不太行,太繁琐!)(50分)

  • 主题发起人 jklmsoho
  • 开始时间
J

jklmsoho

Unregistered / Unconfirmed
GUEST, unregistred user!
如何过滤出html文件中的所有链接和其说明文字?(我的办法--不太行,太繁琐!)

1.把网页文件导入到一RichEdit中
2.把RichEdit中的每一行写到一串AnsiString中
3.用Pos等函数删除掉除了<body>与</body>外的内容
4.删除<body>与</body>中的<script 到</script>的所有内容
5.用Repeat和While逐个找出链接每个<a 到</a>保存为一个字符串
6.分析保存的<a 到</a>的内容:包括删除<img到>的内容
(有时里面有很多其它东东 这个是关键 具体做法 请多指教)

这个办法太繁琐了!我用了一些控件和unit,都不是很理想,
我只需要<a 到</a>中的内容,并分离出连接地址和注释:
例如:
<a href="http://www.delphibbs.com" target=_blank><b>大</b><font size=2 color=blue>富翁</font></a>
我要的是: "http://www.delphibbs.com" 和 "大富翁"这两个字符串.

 
呵,不是RichEDIT,而用TWebBrowser控件。有一个所有链接的属性。你遍历就行了。

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,mshtml,Buttons,Activex, Psock, NMHttp,olectrls, ComCtrls,
SHDocVw;


  var
   doc:IHTMLDocument2;
   all:IHTMLElementCollection;
   len,i:integer;
   item:OleVariant;
  begin
   doc:=WebBrowser1 .Document as IHTMLDocument2;
   all:=doc.Get_links;             //doc.Links亦可
   len:=all.length;
   for i:=0 to len-1 do begin
    item:=all.item(i,varempty);        //EmpryParam亦可
    memo1.lines.add(item.href);
   end;
 
顶部