首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 关于dom元素获取。 (施用mshtml IHTMLDocument)进入看详情

2013-02-18 
delphi 关于dom元素获取。 (使用mshtmlIHTMLDocument)进入看详情!本帖最后由 geekjack 于 2013-01-25 00:19

delphi 关于dom元素获取。 (使用mshtml IHTMLDocument)进入看详情!
本帖最后由 geekjack 于 2013-01-25 00:19:02 编辑 由于需求要求,要抓取某个特殊html页面的某些信息。
我认为引入webbrowser的document来管理dom将是很不错的选择,因此我这边选用IHTMLDocument2来解决这个问题。(webbrowser不显示,利用它的document来工作)

但是这个过程中遇到这样一个问题:


  <div class='aha_class' id='aha_id'>
      <ul>
         <li><a href='./aa.php'>a_text</li>
         <li><a href='./bb.php'>b_text</li>
         <li><a href='./cc.php'>c_text</li>
      </ul>
  </div>


假设这个html文件中有上面这段代码,我可以调用IHTMLDocument3的GetElementById('aha_id');来获取到这个div元素。  
    IHTMLElement divElement := Doc.GetElementById('aha_id');

    但是接下来要如何去遍历<ul><li>...</li>...</ul>呢? 从而提取出信息

a_text
b_text
c_text


-----------------------------
另外,在编程中看到一个QueryInterface的东东,网上说是COM的一个接口查询,不是很懂,在Delphi中一般都是怎么用这个方法的呢?


求指教!哈哈

[解决办法]

var  
  i, j,m,n: integer;  
  ovTable,ovTableul: OleVariant;  


[delphi] view plaincopyprint?
//这一部分是取得“无序列表”的部分  
ovTable:=Webbrowser1.OleObject.Document.getElementsByTagName('ul').item(0);  
ovTableul:=ovTable.getElementsByTagName('li');  
  
n:=ovTableul.Length;  
  
if n>0 then  
begin  
  for i:=0 to n-1 do  
  begin  
    self.Memo1.Lines.Add(ovTableul.item(i).InnerText);  
  end;  
end;  

热点排行