博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi 解析HTML
阅读量:4324 次
发布时间:2019-06-06

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

uses mshtml;

IHTMLEleMent.ID;

IHTMLEleMent.tagName;

IHTMLEleMent.title; elmt._className; elmt.getAttribute('anchor', 0);
procedure TForm1.btnphClick(Sender: TObject);var  Document: IHTMLDocument2;  FTableCollection, tempCoc: IHTMLElementCollection;  table: IHTMLTABLE;  TableRow: IHTMLTableRow;  elmt: IHTMLEleMent;  I, J, K: integer;  str: string;begin  Document := WebBrowser1.Document as IHTMLDocument2;  FTableCollection := Document.all;  FTableCollection.Length; //  FTableCollection.item(1, 0);  FTableCollection := Document.all.tags('table') as IHTMLElementCollection;  for I := 0 to FTableCollection.Length - 1 do  begin    table := FTableCollection.item(I, 0) as IHTMLTABLE;  //题数    for J := 0 to table.rows.Length - 1 do    begin      TableRow := (table.rows.item(J, 0) as IHTMLTableRow); //每道题信息      str := '';      for K := 0 to TableRow.cells.Length - 1 do      begin        elmt := TableRow.cells.item(K, 0) as IHTMLEleMent;        str := str + elmt.innerText + #9;      end;      str := StringReplace(str, ''#$D#$A'', '', [rfReplaceAll]);      Memo3.Lines.Add(str);      Memo3.Lines.Add('------------------------------------------');    end;  end;end;

  URL := 'http://bbs.csdn.net/forums/Delphi';

  WebBrowser1.Navigate(URL);

下面是一行tablerow的数据,可以分解出来,<td><td>之间是一个cell列。

如何解析第一列的href、class之间的3个数据呢,?、delphi7 滚动条颜色、VCL组件开发及应用

 

 

把td这一部分IHTMLEleMent当作IHTMLElementCollection解析就可以了,tagName,getAttribute('href',0),title,_className都可以获得正确的值,是6个集合元素。

tempCoc := elmt.all as IHTMLElementCollection;        if (tempCoc.Length = 6) then        begin          for q := 0 to tempCoc.Length - 1 do          begin            emt2 := tempCoc.item(q, 0) as IHTMLEleMent;            if emt2.tagName = 'STRONG' then              s2 := emt2.innerText            else if emt2.tagName = 'A' then            begin              s2 := emt2.getAttribute('href',0);              s2 := emt2.title;              s2 := emt2.innerText;            end            else if emt2.tagName = 'SPAN' then            begin              emt2.tagName;              emt2._className;              emt2.title;              emt2.innerText;            end;          end;        end;

 elmt: IHTMLEleMent;

  elmt := (WebBrowser1.Document as ihtmldocument3).getElementById('idbtn001');

getElementsByName

getElementById

getElementsByTagName

 

doc2: IHTMLDocument2;

doc3: IHTMLDocument3;

  doc2.forms.item('form1',0) as IHTMLFormElement;//取form1的表单

 

elmt := (WebBrowser1.Document as IHTMLDocument3).getElementById('divfirstID');//通过ID取得某个节点elmt := ((elmt.children as IHTMLElementCollection).item(0, 0)) as IHTMLEleMent;//子节点elmt := ((elmt.children as IHTMLElementCollection).item(0, 0)) as IHTMLEleMent;//子节点elmt := ((elmt.children as IHTMLElementCollection).item(0, 0)) as IHTMLEleMent;//子节点elmt := ((elmt.children as IHTMLElementCollection).item(2, 0)) as IHTMLEleMent;//子节点里的第3个子节点elmt := ((elmt.children as IHTMLElementCollection).item(0, 0)) as IHTMLEleMent;//子节点

 

转载于:https://www.cnblogs.com/cb168/p/3918237.html

你可能感兴趣的文章
RTMP
查看>>
求一个数的整数次方
查看>>
点云PCL中小细节
查看>>
铁路信号基础
查看>>
Django 学习笔记(五) --- Ajax 传输数据
查看>>
Spring boot 日志 Logback
查看>>
基于OWIN WebAPI 使用OAUTH2授权服务【授权码模式(Authorization Code)】
查看>>
[深入Maven源代码]maven绑定命令行参数到具体插件
查看>>
laravel 分页使用
查看>>
RobotFramework自动化2-自定义关键字
查看>>
centos6.4-x86-64系统更新系统自带Apache Http Server
查看>>
[置顶] 【cocos2d-x入门实战】微信飞机大战之三:飞机要起飞了
查看>>
BABOK - 需求分析(Requirements Analysis)概述
查看>>
第43条:掌握GCD及操作队列的使用时机
查看>>
Windows autoKeras的下载与安装连接
查看>>
CMU Bomblab 答案
查看>>
微信支付之异步通知签名错误
查看>>
2016 - 1 -17 GCD学习总结
查看>>
linux安装php-redis扩展(转)
查看>>
Vue集成微信开发趟坑:公众号以及JSSDK相关
查看>>