一个网页是图表构成:具体为:
<table width="417" border="1">
  <tr>
    <td width="84">列1</td>
    <td width="107">列2</td>
    <td width="204">列3</td>
  </tr>
  <tr>
    <td>a</td>
    <td>b</td>
    <td>c</td>
  </tr>
  <tr>
    <td>aa</td>
    <td>bb</td>
    <td>cc</td>
  </tr>
</table>
如何能取出该值对应插入表中呢?
首先源文件可以取得,请教如何解析!

解决方案 »

  1.   

    一个网页是图表构成:具体为:
    <table width="417" border="1">
      <tr>
        <td width="84">列1</td>
        <td width="107">列2</td>
        <td width="204">列3</td>
      </tr>
      <tr>
        <td>a</td>
        <td>b</td>
        <td>c</td>
      </tr>
      <tr>
        <td>aa</td>
        <td>bb</td>
        <td>cc</td>
      </tr>
    </table>
    如何能取出该值对应插入表中呢?
    首先源文件可以取得,请教如何解析!
      

  2.   


    1、如果网页是在你自己开发的浏览器里显示,那么可以直接取到iwebbrowser2对象的句柄,并从而取得IHtmlDocument2对象,这样就可以得到整个网页的所有细节数据。再然后就是看你怎么编程取各个节点数据了。
    2、如果是IE的其他浏览器,就要想办法拿到iwebbrowser2对象的句柄,后续处理跟1是一样的。
    3、如果能直接取到源文件的话,那就干脆把它看作一个XML,然后进行XML解析。
      

  3.   

    楼上说的不错procedure TForm1.Button9Click(Sender: TObject);
    var
      I,j,k:Integer;
      s:string;
      vHTMLElement,ihe1,ihetds:IHTMLElement;
      vHTMLAnchorElement:IHTMLAnchorElement;
      tbl,th,td:IHTMLElementCollection ;
      txt:Textfile;
      tb:TTabSheet;
      ietmp:TWebBrowser;
    begin  with (ie.Document as IHTMLDocument2).body.all as
        IHTMLElementCollection do
        for I := 0 to length - 1 do
        begin
          //with item(I, I) as IHTMLElement, item(I, I) as IHTMLAnchorElement do
          vHTMLElement :=   item(I,   I)   as   IHTMLElement ;
         // with     do
           //vHTMLElement.title
           {
         if System.Length(string(vHTMLElement.innerText))>300 then
         begin
           memo3.lines.add(inttostr(i)+'  '+inttostr(System.Length(string(vHTMLElement.innerText)))+'  '+inttostr(system.length(vHTMLElement.innerHTML))+'================');
          memo3.Lines.Add(vHTMLElement.tagName+' {t: '+ vHTMLElement.title+'{ '+vHTMLElement.innerText+' {h:'+vHTMLElement.innerHTML ) ;
         memo3.lines.add('~~~~~~~~~~~~``');
        end;
        }
       if LowerCase( vHTMLElement.tagName  )='table' then
        begin     // memo4.Lines.Add(format('tag:%9s ol:%4d,ot:%4d,oh:%4d,ow:%4d',[vHTMLElement.tagName,vHTMLElement.offsetLeft,vHTMLElement.offsetTop,vHTMLElement.offsetHeight,vHTMLElement.offsetWidth])) ;
          // vHTMLElement.all
          //memo4.lines.add(inttostr(i)+'  '+inttostr(System.Length(string(vHTMLElement.innerText)))+'  '+inttostr(system.length(vHTMLElement.innerHTML))+'================');      tbl  := (vHTMLElement.all ) as IHTMLElementCollection;
           mmTblAly.Lines.Add(format('table %d =========',[tbl.length]));
          for j:=0 to tbl.length-1 do
          begin
            ihe1 := tbl.item(j,j) as  IHTMLElement ;        // mmTblAly.lines.add(inttostr(i)+'  '+inttostr(System.Length(string(ihe1.innerText)))+'  '+inttostr(system.length(ihe1.innerHTML))+'================');
              mmTblAly.Lines.Add(ihe1.tagName+'{t: '+ ihe1.title+'----');
              mmtblaly.lines.add('');
              mmtblaly.lines.Add('--------inntrtex------') ;
              mmtblaly.lines.add('');
              mmTblAly.Lines.Add(ihe1.innerText);
              mmtblaly.lines.add('');
              mmtblaly.lines.Add('--------innerHTML------') ;
              mmtblaly.lines.add('');
              mmtblaly.Lines.add(ihe1.innerHTML ) ;
              mmtblaly.lines.add('');      end;
          memo4.Lines.Add(inttostr(length));
        end;
        // memo4.Lines.Add(vHTMLElement.tagName+' {t: '+ vHTMLElement.title+'{ '+vHTMLElement.innerText+' {h:'+vHTMLElement.innerHTML ) ;
         // memo4.lines.add('~~~~~~~~~~~~``');
        end;
             // SameText(href, 'http://www.csdn.net/') then click;end;用 TWebBrowser 打开网网页,先找 table
    找到talbe后找 tr 这就是行,再找tb 字段了
    分析那些是数据那些上标头