分享

利用WebBrowser读取网页中表格的数据

 micro36 2010-11-17
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MSHTML, StdCtrls, OleCtrls, SHDocVw;

type
  TForm1
= class(TForm)
    Button1: TButton;
    WebBrowser1: TWebBrowser;
   
procedure FormCreate(Sender: TObject);
   
procedure Button1Click(Sender: TObject);
  private
   
{ Private declarations }
  public
   
{ Public declarations }
 
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetHtmlTableCell(aTable: IHTMLTable; aRow, aCol: Integer): IHTMLElement;
var
  Row: IHTMLTableRow;

begin
  Result :
= nil;
 
if aTable = nil then Exit;
 
if aTable.rows = nil then Exit;
  Row :
= aTable.rows.item(aRow, aRow) as IHTMLTableRow;
 
if Row = nil then Exit;
  Result :
= Row.cells.item(aCol, aCol) as IHTMLElement;
end;

function GetHtmlTable(aDoc: IHTMLDocument2; aIndex: Integer): IHTMLTable;
var
  list: IHTMLElementCollection;
begin
  Result :
= nil;
 
if aDoc = nil then Exit;
 
if aDoc.all = nil then Exit;
  list :
= aDoc.all.tags('table') as IHTMLElementCollection;
 
if list = nil then Exit;
  Result :
= list.item(aIndex, aIndex) as IHTMLTable;
end;

function GetWebBrowserHtmlTableCellText(const AWebBrowser: TWebBrowser;
 
const TableIndex, RowIndex, ColIndex: Integer;
 
var ResValue: string): Boolean;
var
  Docintf: IHTMLDocument2;
  tblintf: IHTMLTable;
  node: IHTMLElement;
begin
  ResValue :
= ' ';
  docintf :
= AWebBrowser.Document as IHTMLDocument2;
  tblintf :
= GetHtmlTable(docintf, TableIndex);
  node :
= GetHtmlTableCell(tblintf, RowIndex, ColIndex);
  Result :
= node <> nil;
 
if Result then
    ResValue :
= Trim(node.innerText);
end;

function GetHtmlTableRowHtml(aTable: IHTMLTable; aRow: Integer): IHTMLElement;
var
  Row: IHTMLTableRow;
begin
  Result :
= nil;
 
if aTable = nil then Exit;
 
if aTable.rows = nil then Exit;
  Row :
= aTable.rows.item(aRow, aRow) as IHTMLTableRow;
 
if Row = nil then Exit;
  Result :
= Row as IHTMLElement;
end;

function GetWebBrowserHtmlTableCellHtml(const AWebBrowser: TWebBrowser;
 
const TableIndex, RowIndex, ColIndex: Integer;
 
var ResValue: string): Boolean;
var
  Docintf: IHTMLDocument2;
  tblintf: IHTMLTable;
  node: IHTMLElement;
begin
  ResValue :
= ' ';
  docintf :
= AWebBrowser.Document as IHTMLDocument2;
  tblintf :
= GetHtmlTable(docintf, TableIndex);
  node :
= GetHtmlTableCell(tblintf, RowIndex, ColIndex);
  Result :
= node <> nil;
 
if Result then
    ResValue :
= Trim(node.innerHTML);
end;


function GeHtmlTableHtml(aTable: IHTMLTable; aRow: Integer): IHTMLElement;
var
  Row: IHTMLTableRow;
begin
  Result :
= nil;
 
if aTable = nil then Exit;
 
if aTable.rows = nil then Exit;
  Row :
= aTable.rows.item(aRow, aRow) as IHTMLTableRow;
 
if Row = nil then Exit;
  Result :
= Row as IHTMLElement;
end;

function GetWebBrowserHtmlTableHtml(const AWebBrowser: TWebBrowser;
 
const TableIndex, RowIndex: Integer;
 
var ResValue: string): Boolean;
var
  Docintf: IHTMLDocument2;
  tblintf: IHTMLTable;
  node: IHTMLElement;
begin
  ResValue :
= ' ';
  docintf :
= AWebBrowser.Document as IHTMLDocument2;
  tblintf :
= GetHtmlTable(docintf, TableIndex);
  node :
= GeHtmlTableHtml(tblintf, RowIndex);
  Result :
= node <> nil;
 
if Result then
    ResValue :
= node.innerHtml;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WebBrowser1.Navigate(
'H:\ReadTable\00.html');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ResValue: string;
begin
 
if GetWebBrowserHtmlTableCellText(WebBrowser1, 0, 0, 0, ResValue) then
 
begin
    ShowMessage(ResValue);
 
end else
 
begin
    ShowMessage(
'指定的表格不存在 ');
 
end;
end;

end.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约