博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
htmlParser for delphi
阅读量:5010 次
发布时间:2019-06-12

本文共 2635 字,大约阅读时间需要 8 分钟。

(******************************************************) (*                **工作室                             *) (*              HTML解析单元库                          *) (*                                                    *) (*              DxHtmlParser Unit                     *) (*                                                    *) (*    email:316454904@qq.com     QQ:316454904         *) (******************************************************) unit MyHtmlParser; interface uses Windows,MSHTML,ActiveX,Forms,Variants, SysUtils, Classes; type   TMyHtmlParser = class private     Doc: IHTMLDocument2;     FHTML, FURL: string; procedure SetHTML(const Value: string); procedure SetURL(s: string); public     Doc2:IHTMLDocument2;     FParserOK:boolean;     FTimeOut:integer; constructor Create; destructor Destroy;override; property HTML: string read FHTML write SetHTML; property URL: string read FURL write SetURL; property TimeOut:integer read FTimeOut write FTimeOut default 20000; property ParserOK:boolean read FParserOK default false; end; implementation {
TDxHtmlParser } procedure TMyHtmlParser.SetURL(s: string); var doc4:ihtmldocument4; tick:integer; begin FURL:=s ; if FURL<>'' then begin tick:=gettickcount; doc.QueryInterface(IID_ihtmldocument4,doc4); if assigned(doc4) then begin doc2:=doc4.createDocumentFromUrl(s,'null'); while (doc2.readyState<>'complete') and (gettickcount-tick
nil,'构建HTMLDocument接口失败'); Doc.Set_designMode('On'); //设置为设计模式,不执行脚本 while not (Doc.readyState = 'complete') do begin sleep(1); Application.ProcessMessages; end; HTML:=''; end; destructor TMyHtmlParser.Destroy; begin CoUninitialize; inherited; end; procedure TMyHtmlParser.SetHTML(const Value: string); var V: OLEVariant; vDocument: OLEVariant; vMimeType: OLEVariant; vHtml: OLEVariant; tick:integer; begin if FHTML <> Value then begin tick:=gettickcount; FHTML := Value; V := Doc; vDocument := V.script.Document; vMimeType := 'text/Html'; vHtml := FHtml; vDocument.Open(vMimeType); vDocument.Clear; vDocument.Write(vHtml); vDocument.Close; while (doc.readyState<>'complete') and (gettickcount-tick

受到得闲老师的htmlparser启发,完善了一下,去掉的自认为没必要的东西(有了IhtmlDocument2,神马都是浮云),当然不是完全抄自得闲老师的解析器,本单元中的精华是SetHTML(const Value: string);和SetURL(s: string);这两个函数,其它的没什么意思。

SetHTML(const Value: string)是抄自TEmbeddedwb的IEParser。

SetURL(s: string);是根据MSDN上ihtmlDocument4.createDocumentFromUrl创建出新的ihtmlDocument2接口。

不解释了,代码就这点。

不足的地方:doc2会自动去下载图片,如有朋友修改后还请发我一份,谢谢!!

转载于:https://www.cnblogs.com/Delphi-Farmer/archive/2011/09/21/2184192.html

你可能感兴趣的文章
Devstack 安装OpenStack Pike版本(单机环境)
查看>>
Javascript 函数初探
查看>>
类的定义、声明使用
查看>>
转载,gini系数代码对应的公式
查看>>
编译安装mysql-5.6.40
查看>>
年终总结
查看>>
初创互联网公司技术架构变迁之路
查看>>
【BZOJ 3676】 3676: [Apio2014]回文串 (SAM+Manacher+倍增)
查看>>
【网络流24题】No. 13 星际转移问题 (网络判定 最大流)
查看>>
解析$.grep()源码及透过$.grep()看(两次取反)!!的作用
查看>>
[模板] 字符串hash
查看>>
SGU438_The Glorious Karlutka River =)
查看>>
Linux集群及LVS简介
查看>>
简单几何(直线与圆的交点) ZOJ Collision 3728
查看>>
Codeforces Round #327 (Div. 2)
查看>>
如何解决Provisional headers are shown问题(转)
查看>>
开发网站遇到的bug
查看>>
实现简单的接口自动化测试平台
查看>>
EXCEL工作表合并
查看>>
Prime Path
查看>>