博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi 解析HTML
阅读量:4323 次
发布时间: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

你可能感兴趣的文章
第2天线性表链式存储
查看>>
python自动化测试-D11-学习笔记之一(yaml文件,ddt)
查看>>
mysql存储过程使用游标循环插入数据
查看>>
Ubuntu 12.04 添加新用户并启用root登录
查看>>
20145309信息安全系统设计基础第9周学习总结上
查看>>
c# 字段、属性get set
查看>>
td内容超出隐藏
查看>>
Spring CommonsMultipartResolver 上传文件
查看>>
Settings app简单学习记录
查看>>
SQLAlchemy
查看>>
多线程
查看>>
使用缓存的9大误区(下)转载
查看>>
appium键值对的应用
查看>>
MyEclipse 8.X 通用算法
查看>>
selenium.Phantomjs设置浏览器请求头
查看>>
Java Bigdecimal使用
查看>>
SQL注入之绕过WAF和Filter
查看>>
jquery validate使用方法
查看>>
DataNode 工作机制
查看>>
windows系统下安装MySQL
查看>>